回声多个阵列?

时间:2014-12-11 10:09:59

标签: php arrays

我有一个表单,在提交时为我提供了多个数组。我的问题是,是否有一种智能方法可以回显(向用户显示)所有数组而不是为每个数组做一个foreach?

解决方案是使用foreach循环执行函数吗?

来自TASKS输入的HTML:

<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>";
}

6 个答案:

答案 0 :(得分:1)

所有数组都应该并行索引。您只需要使用其中一个索引,然后可以将其用作所有其余索引:

foreach ($tasks as $i => $task) {
    echo "Task $i: $task<br>";
    echo "  User: {$user[$i]}<br>";
    echo "  Pickup at: {$pickup_at[$i]}<br>";
    ...
}

答案 1 :(得分:0)

foreach($tasks as $key => $keys)
{
   echo $key ."<br>";
}

如果它只是用于在键中添加BR,则另一种方式是

// will give you same output that foreach() gives you.
echo implode("<br>", array_keys($tasks));

答案 2 :(得分:0)

而不是

foreach($tasks as $key => $keys) {
    echo $key ."<br>";
}

你可以这样做:

echo(implode('<br>', $tasks));

这会在<br>的元素之间放置$task并生成一个字符串。根据您可能需要的echo字符串的HTML上下文,或者可能不需要在最后一个元素后附加额外的<br>

答案 3 :(得分:0)

我认为您的表单存在问题。你的HTML应该是这样的:

<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);

答案 4 :(得分:-1)

echo "<pre>"; print_r($tasks); echo "</pre>";

答案 5 :(得分:-1)

您需要进行某种迭代 - foreach是最明显的。您还可以使用其他本机函数,例如array_walk

array_walk($array, function($val, $key) {
   echo $key, PHP_EOL;
});

但它确实在这里添加了任何东西。我坚持使用foreachvar_dump