PHP, как перебирать массив сообщений

Мне нужно зациклиться на массив сообщений и пропустить его.

#stuff 1
<input type="text" id="stuff" name="stuff[]" />
<input type="text" id="more_stuff" name="more_stuff[]" />
#stuff 2
<input type="text" id="stuff" name="stuff[]" />
<input type="text" id="more_stuff" name="more_stuff[]" />

Но я не знаю, с чего начать.

Ответ 1

Вот как вы это сделаете:

foreach( $_POST as $stuff ) {
    if( is_array( $stuff ) ) {
        foreach( $stuff as $thing ) {
            echo $thing;
        }
    } else {
        echo $stuff;
    }
}

Это заставляет и переменные, и массивы передаваться в $_POST.

Ответ 2

Скорее всего, вам также понадобятся значения каждого элемента формы, такие как значение, выбранное из раскрывающегося списка или флажка.

 foreach( $_POST as $stuff => $val ) {
     if( is_array( $stuff ) ) {
         foreach( $stuff as $thing) {
             echo $thing;
         }
     } else {
         echo $stuff;
         echo $val;
     }
 }

Ответ 3

for ($i = 0; $i < count($_POST['NAME']); $i++)
{
   echo $_POST['NAME'][$i];
}

или

foreach ($_POST['NAME'] as $value)
{
    echo $value;
}

Замените NAME на имя элемента, например stuff или more_stuff

Ответ 4

Вы можете использовать функцию array_walk_recursive и анонимную функцию, например:

$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
array_walk_recursive($fruits,function ($item, $key){
    echo "$key holds $item <br/>\n";
});

следует эта версия ответа:

array_walk_recursive($_POST,function ($item, $key){
    echo "$key holds $item <br/>\n";
});

Ответ 5

По какой-то причине я потерял свои индексы, используя опубликованные ответы. Поэтому я должен был зациклить их так:

foreach($_POST as $i => $stuff) {
  var_dump($i);
  var_dump($stuff);
  echo "<br>";
}

Ответ 6

Я адаптировал принятый ответ и преобразовал его в функцию, которая может выполнять n-е массивы и включать ключи массива.

function LoopThrough($array) {
    foreach($array as $key => $val) {
        if (is_array($key))
            LoopThrough($key);
        else 
            echo "{$key} - {$val} <br>";
    }
}

LoopThrough($_POST);

Надеюсь, это кому-нибудь поможет.