JS / PHP数组合并

时间:2012-05-04 12:50:10

标签: php javascript arrays

我有一个表单,用户上传图像并为其输入标题,然后提交。为了实现它,我整合了AJAXUPLOADER,它不允许一次多个Image Upload,但是一个接一个,我没有问题。

在成功时,它返回上传的文件名,我做的,我插入一个包含图像文件名作为值的隐藏字段。我插入一个文本字段供用户输入标题。

基本上,我想拥有一个包含多个文件名和标题的数组,所以我把这段代码放在一边:

 input type="text" name="images[][title]" input type="hidden" value="'+response+'" name="images[][url]" 

它完美无缺,但有一个问题。 数组结构使用上面的代码构建:

[images] => Array
    (
        [0] => Array
            (
                [title] => Ferrari
            )

        [1] => Array
            (
                [url] => d2339e1d8da95e811c4344eaef226d09.jpg
            )

        [2] => Array
            (
                [title] => Ferrari
            )

        [3] => Array
            (
                [url] => 714208a8c1b819a548a258c33e311e98.jpg
            )

    )

但是,我希望它们采用以下格式:

  [images] => Array
    (
        [0] => Array
            (
                [title] => Ferrari,
                [url] => d2339e1d8da95e811c4344eaef226d09.jpg
            )

        [1] => Array
            (
                [title] => Ferrari,
                [url] => 714208a8c1b819a548a258c33e311e98.jpg
            )

    )

欢迎任何快速帮助!

2 个答案:

答案 0 :(得分:3)

通过在输入中声明索引,该数组将自动为您构建,无需进行任何奇特的数组合并。

<input type="text" name="images[0][title]" />
<input type="hidden" value="'+response+'" name="images[0][url]" />

<input type="text" name="images[1][title]" />
<input type="hidden" value="'+response+'" name="images[1][url]" />

依此类推:)如果您使用PHP循环来声明输入,那就像这样简单。

<? for($i = 0; $i < 2; $i++) { ?>
<input type="text" name="images[<?= $i ?>][title]" />
<input type="hidden" value="'+response+'" name="images[<?= $i ?>][url]" />
< } ?>

我希望这有助于让您的生活更轻松!

答案 1 :(得分:0)

将其命名为titles[],然后将它们合并到PHP中。

示例:

<?php
header("Content-type: text/plain"); //Display only
$urls = array(
    "http://example.com/",
    "http://example.com/images/"
);
$titles = array(
    "Example",
    "Example Images"
);
$images = array();
foreach ($urls as $key => $value) {
    $images[$key]["url"] = $value;
    $images[$key]["title"] = $titles[$key];
}

print_r($images);