2010-07-01 5 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) 

Сделайте то же самое в гнездовой пункте Еогеасп.

И он должен работать нормально. Кроме того, вы можете также сбросить логическое сравнение, 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>"; 
     } 
    } 
} 
Смежные вопросы