У меня есть форма, которая дает мне несколько массивов при отправке. Мой вопрос в том, есть ли умный способ вывести (показать пользователя) все массивы вместо того, чтобы делать foreach для каждого массива?
Может ли решение выполнить функцию с циклом foreach?
HTML с входа TASKS:
<td><input type="checkbox" name="tasks[<?php echo($value[0]);?>]"value=<?php echo($key[0]);?>></td>
Мой скрипт PHP:
if(isset($_POST['submit'])) {
$tasks = $_POST['tasks'];
$user = $_POST['user'];
$pickup_at = $_POST['pickup_at'];
$message = $_POST['message'];
$price = $_POST['price'];
$part_missing = $_POST['part_missing'];
Foreach ex. в массиве TASKS
foreach($tasks as $key => $keys)
{
echo $key ."<br>";
}
Все массивы должны иметь индексы параллельно. Вам нужно использовать только индексы из одного из них, а затем использовать их как индексы для всех остальных:
foreach ($tasks as $i => $task) {
echo "Task $i: $task<br>";
echo " User: {$user[$i]}<br>";
echo " Pickup at: {$pickup_at[$i]}<br>";
...
}
Я думаю, что есть проблемы с вашей формой. Ваш html sholud будет следующим:
<td><input type="checkbox" name="tasks[]" value="<?php echo($value[0]);?>"></td>
Установлено:
<td><input type="checkbox" name="tasks[<?php echo($value[0]);?>]"value=<?php echo($key[0]);?>></td>
После этого вы можете напечатать такие значения:
echo implode(',',$tasks);
foreach($tasks as $key => $keys)
{
echo $key ."<br>";
}
Если его просто использовать для добавления ключей BR в другие способы,
// will give you same output that foreach() gives you.
echo implode("<br>", array_keys($tasks));
Вместо
foreach($tasks as $key => $keys) {
echo $key ."<br>";
}
ты можешь сделать:
echo(implode('<br>', $tasks));
Это ставит <br>
между элементами $task
и создает строку. В зависимости от контекста, HTML, где echo
строки, вам может понадобиться или, возможно, потребуется, чтобы не добавлять дополнительные <br>
после последнего элемента.
Вам нужно будет сделать какую-то итерацию - foreach
будет наиболее очевидным. Вы также можете использовать другие встроенные функции, такие как array_walk
:
array_walk($array, function($val, $key) {
echo $key, PHP_EOL;
});
Но это ничего не добавляет. Я бы придерживался foreach
или var_dump
.
echo "<pre>"; print_r($tasks); echo "</pre>";
echo '<pre>' . print_r($tasks, true) . '</pre>';
это намного лучше, чем использовать 3 утверждения.