php - 数组迭代中的 stdClass 对象
问题描述
如果我这样做,我有一个包含 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 帖子,包括以下内容: - 'Cannot use of type of stdClass as array' using Wordpress -在 PHP 中迭代 stdClass 对象 - 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 );
谢谢
解决方案
你得到-
致命错误:未捕获的错误:不能将 stdClass 类型的对象用作数组
致命错误,因为 PHParray
可以使用括号[]
表示法访问,并且object
' 是箭头->
让我们以这种方式使用foreach()
并implode()
获得逗号分隔的 id,1,2,3
但我也认为您可以从数据库查询端修复它,而无需在此处修改输出 :) 希望这对先生有所帮助。
$expected = [];
foreach ($results as $key=>$obj){
$expected[] = $obj->ID;
}
echo implode(',',$expected);
工作演示: https ://3v4l.org/oUCkL
推荐阅读
- c# - 反序列化 HTTP 正文时 MissingMemberHandling.Error 强制异常
- unity3d - 将 Unity Scriptable Object 附加到 GameObject
- python - 对翻译函数以解释数据抽象感到困惑
- html - CSS 将文本放置在网格图块中
- css - React Styled Component 的 CSS 方法优化
- wpf - 当应用程序失去焦点/替代 IsKeyboardFocusWithin 时,最后一个焦点项目的视觉指示
- c# - CSVHelper - 忽略一行中的空白单元格,除非它们被填充
- postman - Postman 使用响应正文中的值调用多个 api
- python-3.x - 当我运行此代码时,我无法获得支路编号,而是获得了“
“。但我应该得到4。这是什么原因。我该怎么办? - three.js - 三色片段着色器