php多维数组语法

时间:2013-06-22 22:32:45

标签: php arrays syntax multidimensional-array

以下代码在一行中有两个注释掉的变体。它们会产生相当不同的结果,因为您将看到如果运行它们 - 没有$array[$key]之间的空格,键的各个字母将映射到数组值。

有人可以解释这里发生了什么,为什么?

谢谢!

<?php

$letters = array('A','B','C');
$numbers = array(1,2,3);
$matrix = array('Letter' => $letters, 'Number' => $numbers);

foreach($matrix as $array => $list)
{
    echo '<ul>';
    foreach($list as $key => $value)
    //  {echo "<li>$array [$key] = $value ";}
    //  {echo "<li>$array[$key] = $value ";}
    echo '</ul>';
}

3 个答案:

答案 0 :(得分:3)

"$array[$key]"被解释为数组访问($array[$key]的值)。与echo $array[$key];相同。

"$array [$key]"被解释为两个不同的变量:$array$key。与echo $array." [".$key."]";相同。

答案 1 :(得分:0)

输出差异的原因是由于PHP解析包含变量的字符串的方式。

如果你改变:

{echo "<li>$array [$key] = $value ";}

{echo "<li>" . $array [$key] . " = $value ";}

它会产生相同的东西和它下面的一行。

{echo "<li>$array[$key] = $value ";}

PHP主要是与空白无关的,但不是内部空白无关紧要的字符串内部。

答案 2 :(得分:0)

请记住&#34;双引号&#34;尝试执行你的代码,而#34;单引号&#34;将代码仅作为文本处理。

在这种情况下:

echo "<li>$array[$key] = $value ";

正在评估此代码。这里是说&#34;把这个值放在这个数组的位置&#34;。另一方面,这个:

echo "<li>$array [$key] = $value ";

没有被评估,因为对于php来说,doens有意义的是它的解析器为这样的东西赋值:

[$someting] = $value;

上面的代码返回致命错误。

你的代码没有返回致命错误,因为php试图以某种不会引发异常的方式处理你的代码。

代码的最后一个示例(带空格的示例)与此相同:

echo '<li>' . $array . '[' . $key . '] = ' . $value;

简而言之:想在某些字符串中显示一些变量?将变量放在php字符串的解释中:

echo $myvar . ' = ' . $myvalue;