I have a form that gives me multiple arrays when submit. My question is if there is a smart way to echo out (to show the user) all the arrays instead of doing a foreach for each array?
Could a solution be to do a function with a foreach loop?
HTML from the TASKS input:
<td><input type="checkbox" name="tasks[<?php echo($value[0]);?>]"value=<?php echo($key[0]);?>></td>
My PHP script:
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. on the TASKS array
foreach($tasks as $key => $keys)
{
echo $key ."<br>";
}
All the arrays should have indexes in parallel. You only need to use the indexes from one of them, and can then use that as indexes into all the rest:
foreach ($tasks as $i => $task) {
echo "Task $i: $task<br>";
echo " User: {$user[$i]}<br>";
echo " Pickup at: {$pickup_at[$i]}<br>";
...
}
echo "<pre>"; print_r($tasks); echo "</pre>";
foreach($tasks as $key => $keys)
{
echo $key ."<br>";
}
If its just use to add BR in keys another ways is
// will give you same output that foreach() gives you.
echo implode("<br>", array_keys($tasks));
You will need to do some kind of iteration - foreach
being the most obvious. You can also use other native functions like array_walk
:
array_walk($array, function($val, $key) {
echo $key, PHP_EOL;
});
But it does't really add anything here. I'd stick with foreach
or var_dump
.
Instead of
foreach($tasks as $key => $keys) {
echo $key ."<br>";
}
you can do:
echo(implode('<br>', $tasks));
This puts <br>
between the elements of $task
and produces a string. Depending on the HTML context where you echo
the string you may need or may need not to append an extra <br>
after the last element.
I think there is problem with your form. Your html sholud be this:
<td><input type="checkbox" name="tasks[]" value="<?php echo($value[0]);?>"></td>
Insted of this:
<td><input type="checkbox" name="tasks[<?php echo($value[0]);?>]"value=<?php echo($key[0]);?>></td>
After that you can print the values like this:
echo implode(',',$tasks);