使用PHP中的print函数格式化数组和嵌套数组


Formatting arrays and nested arrays with the print function in PHP

我在PHP中使用打印函数格式化数组和嵌套数组时遇到问题。

到目前为止,在学习PHP的过程中,我一直在用" "包装打印命令,并将类似<p>的基本html放在带有单个变量的引号中,一切都很好。今天,我一直在创建数组和嵌套数组,并得到了一些奇怪的行为。

例如:

// nested array
$array2 = array(6, "fox", "dog", array("x", "y", "z"));
// display nested array index 1
print "<p> $array2[3][1] </p>";

这将打印Array[1]而不是y

如果我这样做,它可以打印:

print "<p>" . $array2[3][1] . "</p>";

最后一个数组,我正在尝试使用一个可打印的<pre>标签打印。到目前为止,我已经尝试过了,但我在浏览器中看到的只是array

print_r("<pre>" . $array2 . "</pre>");

如果标签不能连接,我一定是做错了什么?

使用时

print_r("<pre>" . $array2 . "</pre>");

您将字符串<pre></pre>与一个数组连接,它会自动将数组转换为"array",它等于以下值:

print_r("<pre>" . (string)$array2 . "</pre>");

实际上想要做的是在数组本身上使用print_r,而不是将其转换为字符串。您可以使用print_r中的第二个参数来返回值,而不是输出值:

echo '<pre>' . print_r($array2, true) . '</pre>';

您应该添加花括号:

// nested array
$array2 = array(6, "fox", "dog", array("x", "y", "z"));
// display nested array index 1
print "<p> {$array2[3][1]} </p>";

来自手册:

如果遇到美元符号($),解析器会贪婪地将其作为尽可能多的令牌以形成有效的变量名封装大括号中的变量名,以显式指定name