我使用它来通过json从jquery到php数组获取一个字符串。
$navMenuLayout = array();
parse_str($layout['navMenu'], $navMenuLayout);
print_r($navMenuLayout);
但是我注意到如果我取出第一行然后我仍然得到相同的输出,第一行是否重要?
parse_str($layout['navMenu'], $navMenuLayout);
print_r($navMenuLayout);
答案 0 :(得分:1)
当然,您不必为此函数预定义变量,因为PHP会自动设置它们。
请参阅example from PHP.net,了解定义/未定义第二个参数时会发生什么:
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
?>
因此,如果你没有定义第二个参数,字符串中的每个key =&gt;值对都会变成一个实际变量,而如果你定义一个要设置的变量,它们会被放入一个数组中。变量。 PHP将自动为该函数创建所有内容,您无需预先定义任何内容。
答案 1 :(得分:0)
parse_str
在php manual中定义为:
void parse_str ( string $str [, array &$arr ] )
数组参数周围的方括号将其标记为可选。 &
将其标记为引用参数,这意味着如果从调用代码传入变量,将创建一个数组。
所以要么是正确的,但第一个告诉任何维护者代码更多关于你期望从函数调用发送/返回的内容,而不必在手册中查找。
答案 2 :(得分:0)
$navMenuLayout = array();
声明变量。您可以在不首先声明它的情况下离开,但如果您在php.ini错误配置中启用了通知,则会收到通知,通知您正在使用未声明的变量(请参阅http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting以设置错误日志记录级别)。
$navMenuLayout
,意图用函数的结果替换它的值。
如果你看一下http://www.php.net/parse_str,你会在声明中看到有一个&amp;在变量名称之前:parse_str ( string $str [, array &$arr ] )
。这意味着传递的变量将被覆盖。