今天工作过程中需要打印一个数组。
<?php
$arr =[1,2,3];
print_r($arr);
?>
这个会输出Array ( [0] => 1 [1] => 2 [2] => 3 ),
但是如果打印方式改成
<?php
$arr =[1,2,3];
print_r($arr.’111′);
?>
结果就变成了Array111,如果开始的时候你不知道array是否为空,那么这周打印方式会导致你认为$arr 是一个空数组。
如果你你把111 放在print外面,又会怎样呢
<?php
$arr =[1,2,3];
print_r($arr).’111′;
?>
就是出现Array ( [0] => 1 [1] => 2 [2] => 3 ) 丢掉了111这个字符。即使$arr=’222′;是个字符串也不会输出111,如果想打印222111只能
echo print_r($arr,ture).’111′;print_r第二个参数是把数组转换成字符串,然后用echo拼接。
下面是ChatGpt给出的解释:
关键点:print_r($a) . '111'; 的执行顺序
print_r($a)
- 默认情况下,
print_r($a)会直接把内容输出到屏幕,比如输出一个数组。 - 然而它 不返回字符串,除非你加了第二个参数
true。
print_r($a) . '111';
- 这个是一个表达式,其中:
print_r($a)返回的是null(因为你没有传true参数);- 所以你等于在执行:
null . '111'; - 结果是字符串
'111',但这个结果你没有用echo输出。
所以最终效果:
print_r($a)把$a的内容直接输出了;'111'虽然在内存中存在,但你没有输出它,所以页面上没有看到它。
