gpt4 book ai didi

php - 分层 php 函数执行错误!这是什么?

转载 作者:行者123 更新时间:2023-12-04 19:20:04 25 4
gpt4 key购买 nike

为什么我在以下两种情况下通过 print_r 得到不同的输出!!?这是php中的错误? php 无法执行调用内部函数的复杂层次函数吗?

CASE 1 :
$aa='2,3,4,5,5,5,';
$aa=array_unique(explode(',',$aa));
array_pop($aa);
print_r($aa);

CASE 2 :
$aa='2,3,4,5,5,5,';
array_pop(array_unique(explode(',',$aa)));
print_r($aa)

在第一种情况下,输出是一个分解数组:

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 ) 

在第二种情况下,输出是字符串:

2,3,4,5,5,5,

最佳答案

这是因为 array_pop 改变了它的输入,而您向它传递了一个临时变量(不是 $aa)。

注意文档中的签名:array_pop ( array &$array ) - & 表示它通过引用获取参数,并更改该输入变量。

与其他两个函数比较:

array explode ( string $delimiter , string $string , int $limit )

array array_unique ( array $array , int $sort_flags = SORT_STRING )

在第一种情况下,您使用 array_unique() 的输出更新 $aa,然后将其传递给 array_pop 进行更改。

在第二种情况下,array_unique() 的输出将是相同的,但是这个临时值没有分配给变量,因此在 array_pop 之后它被遗忘了打电话。

值得注意的是,在 PHP 中(不同于 C++),passing by reference is actually slower than passing by value因此仅用于修改函数的输入参数。

关于php - 分层 php 函数执行错误!这是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10773135/

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