[PHP]print_r打印数组+数字,显示空数组

今天工作过程中需要打印一个数组。

<?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' 虽然在内存中存在,但你没有输出它,所以页面上没有看到它。

Leave a Comment

Your email address will not be published. Required fields are marked *