gpt4 book ai didi

php - 在 PHP 中创建奇怪的数组?

转载 作者:行者123 更新时间:2023-12-02 05:53:45 25 4
gpt4 key购买 nike

我正在阅读 PHP manual对于 mysqli_stmt_bind_result 并在 comments 中看到此代码:

while ( $field = $meta->fetch_field() ) {
$parameters[] = &$row[$field->name];
}

鉴于 $params 和 $row 在该行之前都不存在,该行为什么/如何工作?

最佳答案

PHP 实际上没有变量声明。这意味着在某些情况下您可以引用变量而无需事先声明它们。我说一些情况是因为:

foreach($undefinedArray as $key=>$value){
// will give a notice and a warning
// notice: undefined variable
// warning: invalid argument to foreach
}

但这并不意味着你不能这样做:

for($i=0;$i<5;$i++){
$undefinedArray[]=$i;
}
// will create an array with 5 indexes, each holding the numbers 0 through 4

这是有效的,因为 $undefinedArray 不是动态找到和创建的。

现在,关于您自己的情况。我假设你的意思是 this post .我不得不承认,这是一个非常有趣的解决方案,我会尽量克制自己不评论那里的任何不良做法,但让我们继续解释吧!

$params[] = &$row[$field->name]; 

这就是魔法发生的地方,它实际上是由于 &。因为 &$row['unknown_index'],实际上创建索引!

这意味着上面的语句做了两件事。首先,它创建一个数组,其中每个列名都保存为 $row ($row[$field->name]) 中的索引。然后它在 $params 中保存指向 $row 中每个元素的指针。

call_user_func_array(array($stmt, 'bind_result'), $params); 

这会执行 $stmt->bind_result()。但是将 $params 中的每个元素作为参数传递给 bind_result。由于它们是通过引用传递的,因此 $row 的每个索引都将包含每个选定的字段。

剩下的现在应该很容易弄清楚了。

如果您有任何问题。欢迎提问!

关于php - 在 PHP 中创建奇怪的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5754719/

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