【问题标题】:Array to string conversion ERROR in PHP JSON decoded arrayPHP JSON解码数组中的数组到字符串转换错误
【发布时间】:2015-01-17 14:33:08
【问题描述】:

我是 PHP 新手,正在编写从 URL 获取 JSON 数据的脚本,我从 URL 获取数据并还解码了该 JSON。

但问题是 JSON 解码数组未转换为 String。当我尝试运行到foreach 循环时出现错误 这是数组示例输出:

数组名称为:$data

输出:

array(2) {
    [0]=> string(5) "world"
    [1]=> array(12) {
        [0]=> string(15) "worldstarhiphop"
        [1]=> >string(17) "world series 2014"
        [2]=> string(18) "world of solitaire"
        [3]=> string(9) "world map"
        [4]=> string(19) "world's tallest cow"
        [5]=> string(10) "world news"
        [6]=> string(12) "world series"
        [7]=> string(9) "worldstar"
        [8]=> string(12) "world market"
        [9]=> string(29) "worldstarhiphop official site"
        [10]=> string(19) "world's tallest dog"
        [11]=> string(17) "world of warcraft"
    }
}

我试过了:

if(is_array($data)) {
  foreach ($data as $key=>$value) {
    echo $value;
  }
}

给出这个错误:

Notice: Array to string conversion in

【问题讨论】:

  • $data 是一个包含 both 字符串和数组的数组。因此,在循环的一次迭代中,$value 是一个数组。
  • 那么我可以做些什么来输出该数组的每个值?
  • 检查它是否是一个数组(is_array),然后遍历它并打印每个元素。
  • 我已经检查了我的代码
  • 我们已经知道$data 是一个数组。我说的是$value。有时是字符串,有时是数组。

标签: php json error-handling type-conversion


【解决方案1】:

这应该可以帮助您入门。 var_dump 主要用于调试,显示变量的内容。

foreach($data as $foo) {
  if(is_array($foo) {
     foreach($foo as $bar) {      
       var_dump($bar);
     }
  } else {
    var_dump($foo);
  }
}

考虑到这也可以以递归方式解决。

function printNestedArray($foo) 
{
  if(is_array($foo) === false) {
    var_dump($foo);
  } else {
    foreach($foo as $bar) {
      printNestedArray($bar);
    }
  }
}

【讨论】:

  • 我先尝试了这个,它负载过大,还显示“字符串(此处没有字符串)”,它作为一个字符串返回,也不能单独打印?
  • var_dump 更改为echo 看看会发生什么。
  • 嗨@AbdullahSiddique,我并不总是直接给出答案,抱歉,幸运的是AbraCadaver 给出了一个非常简洁的答案。我很好奇,您所说的“负载过多”是什么意思,除非您有一个非常大的数组,否则我不会花任何时间在性能上。
  • 非常感谢 :) 我是新手,还在学习表面 :)
【解决方案2】:

如果您的数组的结构总是像 0 作为一个单词,1 包含一个相关单词数组,那么:

echo $data[0];

foreach ($data[1] as $value) {
  echo $value;
}

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    相关资源
    最近更新 更多