gpt4 book ai didi

php - 为什么 php 在引用一个不存在的变量时不报错?

转载 作者:可可西里 更新时间:2023-11-01 13:19:37 26 4
gpt4 key购买 nike

我想知道为什么当我们引用一个不存在的变量(无论是普通变量还是数组)时 php 不报错,这是它本来的样子,还是我遗漏了其他东西?例如这段代码

<?php
$t = &$r["er"];
var_dump($r);
?>

不对不存在的变量发出警告。

除此之外,var_dump 还显示:

array(1) { ["er"]=> &NULL }

&NULL 是我没想到的,我以为我会得到一个普通的 NULL

提前致谢!

最佳答案

如果 PHP 解释器引用 var 分配的内存对我有用,PHP 将在哈希表中创建一个空元素,其键与您发送的键相似并引用它。通过运行以下测试可以看出这一点:

<?php
$i = 0;
$arr = [];
$arrS = null;
$v = memory_get_peak_usage();
for ($i = 0; $i < 150; $i++) {
$arrS = &$arr[rand()];
}
$v = memory_get_peak_usage() - $v;
echo $v;

直到达到默认的堆大小,PHP 将返回恰好使用的额外 0 内存 - 因为它仍在分配已经“准备好的”数组项(PHP 将一些额外的哈希表元素保留为空但为了性能目的而分配)。您可以将其设置为 0 到 16(这是堆大小!)。

当您超过 16 岁时,PHP 将不得不分配额外的项目,并将在 i=17、i=18 等时这样做...,创建空项目以便引用它们。

P.S:与人们所说的相反,这不会引发错误、警告或通知。在没有引用的情况下召回一个空项目 - 引用一个不存在的项目不会。很大很大的不同。

关于php - 为什么 php 在引用一个不存在的变量时不报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15852981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com