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);
Надеюсь, это кому-нибудь поможет.