【发布时间】:2019-05-22 03:25:03
【问题描述】:
如果我这样做print_r($results),我有一个包含 stdClass 对象的数据数组:
Array (
[0] => stdClass Object (
[ID] => 1
)
[1] => stdClass Object (
[ID] => 2
)
[2] => stdClass Object (
[ID] => 3
)
)
我需要以逗号分隔字符串的形式获取 ID 的值。为此,我最初尝试执行 implode(",", $results) 但这会由于 stdClass 对象而出错。因此,经过合理的阅读和检查 SO 等,我已经到了可以访问给定记录上 ID 值的地步:$results[0]->ID。
但是,由于这些数据来自数据库查询,我不知道会有多少行。所以,我需要遍历每一行并将其添加到一个字符串中。
我 - 除其他外 - 试过这个:
$i = 0;
foreach ($results as $result){
//$result->ID;
$result[$i]['ID'];
$i++
}
这些返回错误:
致命错误:未捕获的错误:无法将 stdClass 类型的对象用作 数组
我现在完全不知道如何将所有 ID 值作为逗号分隔的字符串。
我查看了许多 SO 帖子,包括以下内容: - 'Cannot use object of type stdClass as array' using Wordpress - iterating through a stdClass object in PHP - PHP Loop stdClass Object
更新 我得到的数据如下:
global $wpdb;
$query = "Select wp_users.ID from wp_users where wp_users.ID not in ( select wp_usermeta.user_id from wp_usermeta where wp_usermeta.meta_key = 'grp2_profile_visiblity' and wp_usermeta.meta_value = 1 order by wp_usermeta.user_id ) order by wp_users.ID";
$results = $wpdb->get_results( $query, OBJECT );
谢谢
【问题讨论】:
-
如何从 DB 查询中获取数据 - 您可以在那里执行此操作,而不是破坏输出。
-
您提供的代码将返回比该错误更多的代码,因为您使用了一个未定义的常量
i,我猜您的意思是$i,这没有任何意义您显示的数据。您可能想了解foreach的工作原理,其想法是摆脱老式for循环中使用的迭代计数器。 -
@miken32 - 是的,这搞砸了。我很沮丧,并试图在娱乐孩子的同时快速打字。
-
别担心,试一试我的回答,告诉我它对你有什么作用(一旦你让孩子们上床睡觉!)
-
@miken32 我已将查询添加到我的问题中。
标签: php arrays wordpress object stdclass