繁体   English   中英

数组迭代中的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++

}

这些返回错误:

致命错误:未捕获错误:无法使用stdClass类型的对象作为数组

我在这一点上根本不知道如何将所有ID值作为逗号分隔的字符串。

我已经检查了很多SO帖子包括以下内容: - '不能使用类型stdClass的对象作为数组'使用Wordpress - 迭代PHP中的stdClass对象 - PHP循环stdClass对象

更新我得到的数据如下:

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

谢谢

你得到 -

致命错误:未捕获错误:无法使用stdClass类型的对象作为数组

致命错误,因为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM