【问题标题】:Looping through array/object with no key names only indexes遍历没有键名的数组/对象只有索引
【发布时间】:2017-05-11 05:59:23
【问题描述】:

我使用json_encode 在我的数据库中存储了一个数组,并在我想检索它时在其上运行json_decode,但是我无法在其上运行foreach 来访问图像URL我需要在我的视图中显示。

这是来自以下$new_invoices = json_decode($invoices); var_dump($new_invoices);的结果

这个输出:

array(2) { 
   [0]=> string(66) "/images/uploaded-invoices/1-logo-square-highres.png-1482788616.png" 
   [1]=> string(58) "/images/uploaded-invoices/1-logo-square.png-1482788616.png" 
}

我一直在尝试使用以下语句从中获取图像 URL:

foreach ($new_invoices as $value) {
     echo($value);
}

这一直在抛出Invalid argument supplied for foreach()

有没有办法循环并获取这些 URL?

【问题讨论】:

  • 代码对我来说看起来不错。如果你在你的 var_dump 中得到一个数组,那么它应该是一个有效的 foreach 参数。
  • 根据您提供的代码应该可以工作
  • $new_invoices = json_decode($invoices, true);
  • @Eugen 第二个参数只对对象有影响,对数组和字符串没有影响。
  • 为什么要将数组存储在表的单列中?规范化您的架构,使每个元素位于相关表的不同行中。

标签: php arrays object foreach


【解决方案1】:

很明显错误在哪里。您正在尝试循环 StdClass 对象。 当您调用 json_decode() 时,它将解析字符串并返回一个对象。如果您需要的是一个数组,则提供 - true - 作为第二个参数。

json_decode($invoices, true);

您的其余代码应该可以正常工作。

【讨论】:

  • 我也尝试过使用json_decode($invoices, true);,但它仍然抛出同样的错误。我想我会创建一个相关的表来存储这些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多