Vis*_*hal 2 php arrays function hierarchical
为什么我在以下两种情况下通过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)
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,输出是爆炸数组:
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 )
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,输出是字符串:
2,3,4,5,5,5,
Run Code Online (Sandbox Code Playgroud)
这是因为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 )
在第一种情况下,您$aa使用输出更新array_unique(),然后将其传递array_pop给要更改.
在第二种情况下,输出array_unique()将是相同的,但是这个临时值没有分配给变量,因此在array_pop被调用之后它被遗忘了.
值得注意的是,在PHP中(与C++不同),通过引用传递实际上比传递值慢,因此仅用于修改函数的输入参数.
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |