print_r,var_dump,var_export打印同一个结果集,输出结果怪异

<?php
header('Content-type:text/html;charset=utf-8');
//设置mysqli参数;
$sqlhost = 'localhost';
$username = 'root';
$pw = '';
$dbname = 'h51905';

$conn = new mysqli($sqlhost,$username,$pw,$dbname) or die('error');

// if($conn->connect_error){
// die('链接错误码为:' . $conn->connect_error);
// };

// echo '链接成功!';

$sql = "SELECT * FROM goodlist";

$res = $conn->query($sql);

// $arr =$res->fetch_all(MYSQLI_ASSOC);

print_r($res);
// var_dump($res);
// var_export($res);

?>


指令查询数据库正常
图片说明
vscode里面的代码
图片说明

print-r输出的结果。
图片说明
var-dump输出结果
图片说明
var-expor输出结果
图片说明

根据你提供的代码和图片,可以看出 print_r、var_dump、var_export 三个函数输出结果的差异:

  1. print_r 输出结果中的对象类型前面带有对象名称 Object,可以推测该对象是一个 mysqli_result 类型的对象,这也符合我们从数据库查询出来的结果是一个结果集对象;
  2. var_dump 输出结果中的对象类型前面带有标识符 resource(资源类型),并且没有打印每个元素的键名,而是用纯数字表示,这是因为 mysqli_result 类型的对象是一个特殊的资源类型对象,不能像普通数组那样遍历输出;
  3. var_export 打印的是一个 NULL,这是因为 mysqli_result 类型的对象是一个无法导出的对象类型。

因此,以上三个函数的输出结果都是正确的,对于 mysqli_result 类型的结果集对象,可以使用 mysqli_result 类型提供的接口来依次取出每一行数据。