从动态表单帖子中收集数据并设置数据格式


Collect and Format Data from Dynamic Form Post

我正在做一个web项目,我需要知道的一件事是如何获取数组项的编号,并使用该编号从不同的数组中获取项,我设置了一个页面来动态添加Bootstrap Panels,其中有2个输入框。

<div class="panel panel-default">
    <div class="panel-heading">
        <a data-toggle="collapse" data-parent="#accordion" href="#<?php echo $index; ?>">
            <h4 class="panel-title">
                <?php echo $menu[0]; ?> <b class="caret pull-right"></b>
            </h4>
        </a>
    </div>
    <div id="<?php echo $index; ?>" class="panel-collapse collapse">
        <div class="panel-body">
            <div class="form-group">
                <label for="menu_name[]">Name:</label>
                <input id="menu_name[]" name="menu_name[]"placeholder="Name">
            </div>
            <div class="form-group">
                <label for="menu_link[]">Link:</label>
                <input id="menu_link[]" name="menu_link[]" value="<?php echo $menu[1]; ?>" placeholder="URL">
            </div>
            <div class="btn-group pull-right">
                <button class="btn btn-danger" type="submit" name="delete" value="<?php echo $index; ?>"><i class="fa fa-trash"></i> Delete</button>
            </div>
        </div>
    </div>

这个表单用于添加菜单,以创建一个包含每个菜单项文本和链接的数组,当我提交表单时,我得到的结果是:

[["Home", "News"], ["http://localhost/", "http://localhost/news/"]]

但我想格式化数组,使每个菜单项都在一个单独的数组中,而不是在数组之间分割2个选项,下面是我想要实现的输出示例:

[["Home", "http://localhost"], ["News", "http://localhost/news"]]

我不知道如何做到这一点,我到处寻找解决方案或例子来提供帮助,但我什么都找不到,我正在对array_search进行一些研究,但我不确定这是否是我想要的。

如果我对这个问题没有错,这就是解决方案。

$json = '[["Home", "News"], ["http://localhost/", "http://localhost/news/"]]';
list($names, $links) = json_decode($json);
for ($k=0; $k<count($names); $k++)
    echo sprintf('Link is "%s" for "%s"', $links[$k], $names[$k]).PHP_EOL;

更新

$json = '[["Home", "News"], ["http://localhost/", "http://localhost/news/"]]';
$output = array();
list($names, $links) = json_decode($json);
for ($k=0; $k<count($names); $k++)
   $output[] = array($names[$k], $links[$k]);

然后您可以看到带有print_r函数的数组。

print_r($output);

以及json_encode 的json

echo json_encode($output);