数组迭代中的 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
我有一个包含 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