数组迭代中的 stdClass 对象

stdClass Object In Array Iteration

我有一个包含 stdClass 对象的数据数组,如果我这样做 print_r($results):

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++

}

这些return一个错误:

Fatal error: Uncaught Error: Cannot use object of type stdClass as array

此时我完全不知道如何将所有 ID 值作为逗号分隔的字符串获取。

我查看了许多 SO 帖子,包括以下内容: - 'Cannot use object of type stdClass as array' using Wordpress - iterating through a stdClass object in PHP -

更新 我得到的数据如下:

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 );

谢谢

你得到-

Fatal error: Uncaught Error: Cannot use object of type stdClass as array

致命错误 因为 PHP array 可以使用方括号 [] 符号访问,而 object 是箭头->

让我们这样做,使用 foreach()implode() 来获取逗号分隔的 ID,例如 1,2,3,但我也认为您可以从数据库查询端修复它,而无需在此处修改输出: ) 希望这对先生有帮助。

$expected = [];
foreach ($results as $key=>$obj){
    $expected[] = $obj->ID;
}
echo implode(',',$expected);

工作演示: https://3v4l.org/oUCkL

使用 array_column() 即可轻松完成此操作以获取 ID 值;它适用于对象和数组一样好。

<?php
// some sample data
$results = json_decode('[{"ID": 1}, {"ID": 2}, {"ID": 3}]');

$return = implode(",", array_column($results, "ID"));
echo $return;

输出:

1,2,3