2010-07-01 17 views
1

使用PHP。我試圖從二維$ _POST數組的第二維檢索$ _POST值,但實際上並不知道所發佈值的名稱。這是我的;它不起作用。

foreach($_POST as $k=>$v) { 

    $$k=$v; 

    if (is_array($k) == true) { 

     foreach($k as $value) { 

      echo $value; 
      echo "<br>"; 

     } 

    } 

} 

我用

echo '<pre>'; 
print_r($_POST); 
echo '</pre>'; 

,以確保有數組中的價值和有。它顯示:

Array 
(

    [colors] => Array 
     (
      [0] => red 
      [1] => yellow 
      [2] => blue 
      [3] => black 
     ) 

) 

這是我的形式複選框樣子:

<input name="colors[]" type="checkbox" value="red" /> 
<input name="colors[]" type="checkbox" value="yellow" /> 
<input name="colors[]" type="checkbox" value="blue" /> 
<input name="colors[]" type="checkbox" value="black" /> 

如何從一個數組中的數組獲取值如果我不知道數組的名字。這個名字不會總是顏色?

回答

4

你快到了。這應該工作:

foreach($_POST as $k=>$v) { 

    if (is_array($v) == true) { 

     foreach($v as $value) { 

      echo htmlspecialchars($value); // Always sanitize when you output! :) 
      echo "<br>"; 

     } 

    } 

} 
1

原因很簡單,爲什麼你上面的代碼不工作是因爲你正在檢查的數組key是否是一個數組,而不是本身的實際價值。換出...

if (is_array($k) == true) 

if (is_array($v) == true) 

做同樣的嵌套的foreach子句。

它應該可以正常工作。另外,你也可以放棄布爾比較,is_array返回一個布爾值,你不會比現在更明確。

0
foreach($_POST as $key => $item) { 
    if (is_array($item)) { // you want to check if the value is an array, not the key 
     foreach($item as $index => $value) { 
      echo $value . "\n<br>"; 
     } 
    } 
} 
相關問題