当我将 print_r() 应用于 PHP 中的数组时,为啥会得到“资源 id #4”? [复制]

Posted

技术标签:

【中文标题】当我将 print_r() 应用于 PHP 中的数组时,为啥会得到“资源 id #4”? [复制]【英文标题】:Why do I get "Resource id #4" when I apply print_r() to an array in PHP? [duplicate]当我将 print_r() 应用于 PHP 中的数组时,为什么会得到“资源 id #4”? [复制] 【发布时间】:2010-12-19 03:59:53 【问题描述】:

可能重复:How do i “echo” a “Resource id #6” from a mysql response in php?

下面是代码:

$result=mysql_query("select * from choices where a_id='$taskid'")or die(mysql_error());
print_r($result);

我得到“资源 id #4”,你知道吗?

我添加后

while($row=mysql_fetch_assoc($result))
 print_r($row); 

我刚收到[]

怎么了?

【问题讨论】:

print_r 将只接受数组和对象。如果你使用 var_dump() 它会给你任何你给它的信息。 【参考方案1】:

Resources 是 PHP 用来跟踪外部资源(如数据库连接、文件句柄、套接字等)的特殊变量类型。

【讨论】:

【参考方案2】:

您正在尝试打印 mysql resource variable 而不是它引用的资源中包含的值。您必须首先尝试使用mysql_fetch_assoc() 等函数提取您获得的值。

您也可以尝试mysql_fetch_array()mysql_fetch_row(),但我发现关联数组非常好,因为它们允许您通过字段名称访问它们的值,如Mike's example。

【讨论】:

【参考方案3】:

$resultmysql_query 返回的资源变量。更多关于资源变量:http://php.net/manual/en/language.types.resource.php

您必须使用mysql_fetch_array()mysql_fetch_assoc()等其他函数来获取查询结果集的数组。

$resultset = array();
$result=mysql_query("select * from choices where a_id='$taskid'") or die(mysql_error());
while($row = mysql_fetch_assoc($result))
  $resultset[] = $row; // fetch each row...

mysql_free_result($result); // optional though...

print_r($resultset);

见:

http://php.net/manual/en/function.mysql-fetch-array.phphttp://php.net/manual/en/function.mysql-fetch-assoc.phphttp://php.net/manual/en/function.mysql-query.php

【讨论】:

【参考方案4】:

mysql_query() 不会将数组返回为explained in the manual。将mysql_fetch_array()mysql_fetch_assoc()mysql_fetch_row()$result 一起使用。有关如何操作查询结果的更多信息,请参阅上面的链接。

$result = mysql_query('SELECT * FROM table');
while ($row = mysql_fetch_assoc($result)) 
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];

【讨论】:

以上是关于当我将 print_r() 应用于 PHP 中的数组时,为啥会得到“资源 id #4”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

json_encode() 转义 / 带有 \ [重复]

使用 print_r 或 php 中的任何其他函数打印多个数组

空 json_encode

PHP中如何定义全局数组?

PHP将所有数组键更改为相同的值

当我将 XSLT 样式表应用到 XML 文件时,啥也没有出现