PHP:通过引用传递不存在的数组项会将其添加为null
我们发现了一种不知道是否正确的行为 请查看下一个代码:PHP:通过引用传递不存在的数组项会将其添加为null,php,arrays,variables,reference,Php,Arrays,Variables,Reference,我们发现了一种不知道是否正确的行为 请查看下一个代码: <?php $a = []; $b = []; $a[] = 'Hello'; $b[] = 'Bye'; if (isset($b[1])) { $b1 = $b[1]; } $a1 = defaultValue($a[1], 'again'); print_r($a); print_r($b); exit; function defaultValue(&$var, $val) { return isset($var
<?php
$a = [];
$b = [];
$a[] = 'Hello';
$b[] = 'Bye';
if (isset($b[1]))
{
$b1 = $b[1];
}
$a1 = defaultValue($a[1], 'again');
print_r($a);
print_r($b);
exit;
function defaultValue(&$var, $val)
{
return isset($var) ? $var : $val;
}
为什么创建项目$a[1]?谢谢 您正在将$var传递给DefaultValue作为引用符号(&S)。 这是创建$a[1]并将其设置为null的位置
您正在将$var传递给DefaultValue作为引用符号(&S)。 这是创建$a[1]并将其设置为null的位置
手册中对此进行了解释: 注: 如果通过引用指定、传递或返回未定义的变量,将创建该变量
因此,当您传递一个未定义的引用时,它将被创建为null。Isset确保应设置为与null不同的值。因此会再次返回该值。手册中对此进行了说明: 注: 如果通过引用指定、传递或返回未定义的变量,将创建该变量
因此,当您传递一个未定义的引用时,它将被创建为null。Isset确保应设置为与null不同的值。因此再次返回值。谢谢。我在手册中找过,显然没有正确的术语。谢谢@gabriel-heming@jhernandis不客气。这不是常识。谢谢。我在手册中找过,显然没有正确的术语。谢谢@gabriel-heming@jhernandis不客气。这不是常识。
Array
(
[0] => Hello
[1] =>
)
Array
(
[0] => Bye
)