PHP函数parse_str返回意外数组

时间:2018-08-23 00:25:19

标签: php arrays

$string = "Title[]=Trekking&Title[]=Climbing&Title[]=Expeditions";
parse_str($string, $output);
print_r ($output);

打印的数组是意外的:

Array (
        [Title] => Array (
            [0] => Trekking [1] => Climbing [2] => Expeditions
        )
)

我不确定发生了什么。这是我想要的输出:

Array (
  ['Title'] => "Trekking",
  ['Title'] => "Climbing",
  ['Title'] => "Expeditions"
)

稍后,我要使用以下命令打印数组:

for ($i=0; $i<count($output); $i++){
  echo $output['Title'][$i]."<br />";
}

1 个答案:

答案 0 :(得分:1)

parse_str正常工作。您的预期输出是不可能的;数组仅允许唯一键。如果要打印标题而不修改数组,则只需将count($output)更改为count($output['Title']);它将遍历$output['Title']数组中的所有标题并进行打印。您只会看到原始循环中的第一项,因为count($output)是1而不是3。

但是,如果您要查找一个数组数组,则每个数组都有自己的'Title'键,如您期望的输出块中所示,例如$output[$i]['Title'],您可以执行以下操作:

$string = "Title[]=Trekking&Title[]=Climbing&Title[]=Expeditions";
parse_str($string, $output);

$output = array_map(function ($e) {
    return ["Title" => $e];
}, $output["Title"]);

print_r ($output);

输出:

Array
(
    [0] => Array
        (
            [Title] => Trekking
        )

    [1] => Array
        (
            [Title] => Climbing
        )

    [2] => Array
        (
            [Title] => Expeditions
        )

)