【问题标题】:php iterate through array of objects inside an arrayphp遍历数组内的对象数组
【发布时间】:2017-02-17 16:37:17
【问题描述】:

我正在尝试遍历数据库中的所有帖子并获取他们的 ID。这是我目前所拥有的:

$posts = $db->select("posts","*",array());

foreach ($posts as $value) {
    $response['postvalue'] = $value;
}

当我运行上面的代码时,我会在控制台中看到它。

在这些对象中我有一个属性“id”。

当我运行这个时:

$posts = $db->select("posts","*",array());

foreach ($posts as $value) {
    $response['postvalue'] = $value->id;
}

我得到一个空值:

我做错了什么?

更新:

【问题讨论】:

  • id实际上是不是叫id 选择*对我们帮助不大
  • 同样在循环中你需要使用$response['postvalue'][] = $value->id; 或者你在循环的每个迭代中都写了$response['postvalue']
  • 是的id叫做id
  • $db->select("posts","*",array()); 也将行作为对象或数组返回,即是 $value->id; 还是 $value['id'];
  • 好吧,至少扩展0: Object 之一,这样我们就可以看到里面有什么

标签: php mysql arrays object


【解决方案1】:

更新您的代码以添加 var 转储并发布帖子数组的数据结构。目前,这将是任何人最好/幸运的猜测,而不知道这些数据的外观。这样人们将能够帮助你

$posts = $db->select("posts","*",array());
//var_dump($posts); 
foreach ($posts->data as $value) {
    $response['postvalue'][] = $value['id'];
}

【讨论】:

  • 不幸的是我不能。我正在使用 php SLIM 为 RESTful APi 运行 Angular 应用程序。我正在运行,openlog("myScriptLog", LOG_PID | LOG_PERROR, LOG_LOCAL0);当我运行这个 syslog(LOG_WARNING, "JASON HI = " . print_r($posts));我得到一个 1
  • 我可以运行这个 $response['posts'] = $posts;在 foreach 循环之前,这就是您在上面更新的图像中看到的
  • Run syslog(LOG_WARNING, "JASON HI = " . print_r($posts,TRUE)); 返回结果而不是直接写入浏览器
  • (将 true 添加到第二个参数以返回) print_r($posts, true)
  • 这里是其中之一。 Array#012(#012 [status] => success#012 [message] => 从数据库中选择的数据#012 [data] => Array#012 (#012 [0] => Array#012 (#012 [id] => 1#012 [guid] => ...
猜你喜欢
  • 1970-01-01
  • 2020-08-18
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多