2010-08-15 139 views
21

我在PHP中有一個POST,我不會總是知道將要處理的變量字段的名稱。

我有一個函數,將遍歷值(不過我也想抓住連同它的變量名。)

foreach ($_POST as $entry) 
{ 
    print $entry . "<br>"; 
} 

一旦我弄清楚如何抓住變量名,我還需要弄清楚我如何使這個函數足夠智能,以檢測和循環變量的數組(如果我有一些複選框的值)。

+2

這個問題肯定不是局部的,因爲我經歷過類似的情況去。 – IcyFlame 2014-06-28 09:17:35

回答

41

如果你只是想打印整個$ _POST陣列,以驗證您的數據被正確發送,使用print_r

print_r($_POST); 

要遞歸地打印數組的內容:

printArray($_POST); 

function printArray($array){ 
    foreach ($array as $key => $value){ 
     echo "$key => $value"; 
     if(is_array($value)){ //If $value is an array, print it as well! 
      printArray($value); 
     } 
    } 
} 

將一些padd荷蘭國際集團到嵌套的數組:

printArray($_POST); 

/* 
* $pad='' gives $pad a default value, meaning we don't have 
* to pass printArray a value for it if we don't want to if we're 
* happy with the given default value (no padding) 
*/ 
function printArray($array, $pad=''){ 
    foreach ($array as $key => $value){ 
     echo $pad . "$key => $value"; 
     if(is_array($value)){ 
      printArray($value, $pad.' '); 
     } 
    } 
} 

is_array返回true,如果給定的變量是一個數組。

你也可以使用array_keys,它將返回所有的字符串名稱。

5

你可以讓foreach循環顯示索引與值:

foreach ($_POST as $key => $entry) 
{ 
    print $key . ": " . $entry . "<br>"; 
} 

至於陣列檢查,使用is_array()功能:

foreach ($_POST as $key => $entry) 
{ 
    if (is_array($entry)) { 
     foreach($entry as $value) { 
      print $key . ": " . $value . "<br>"; 
     } 
    } else { 
     print $key . ": " . $entry . "<br>"; 
    } 
} 
0

如果要檢測數組字段使用這樣的代碼:

foreach ($_POST as $key => $entry) 
{ 
    if(is_array($entry)){ 
     print $key . ": " . implode(',',$entry) . "<br>"; 
    } 
    else { 
     print $key . ": " . $entry . "<br>"; 
    } 
} 
1

這是更好的使用:

if (${'_'.$_SERVER['REQUEST_METHOD']}) { 
    $kv = array(); 
    foreach (${'_'.$_SERVER['REQUEST_METHOD']} as $key => $value) { 
     $kv[] = "$key=$value"; 
    } 
}