Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中将json数据转换为可访问的数组?_Php_Arrays_Json - Fatal编程技术网

如何在PHP中将json数据转换为可访问的数组?

如何在PHP中将json数据转换为可访问的数组?,php,arrays,json,Php,Arrays,Json,我从GoogleAPI获得了一个JSON字体列表,我想在我的PHP应用程序中使用它。我需要一种更容易访问这个JSON对象的方法。例如,我希望能够轻松调用字体及其属性,如下所示: $font['abc']['variants'] 。。。等等 因此,JSON如下所示: $fonts = ' { "kind": "webfonts#webfontList", "items": [ { "kind": "webfonts#webfont", "family": "Yesteryea

我从GoogleAPI获得了一个JSON字体列表,我想在我的PHP应用程序中使用它。我需要一种更容易访问这个JSON对象的方法。例如,我希望能够轻松调用字体及其属性,如下所示:

$font['abc']['variants']
。。。等等

因此,JSON如下所示:

$fonts = '
{
 "kind": "webfonts#webfontList",
 "items": [
  {
   "kind": "webfonts#webfont",
   "family": "Yesteryear",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ]
  },
  {
   "kind": "webfonts#webfont",
   "family": "Zeyada",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ]
  }
]
}
';
我用这个来把它解析成一个数组:

$fonts = json_decode( $fonts, true );
$var_dump( $fonts['items'] );
这个的var转储将显示:

array (size=2)
  0 => 
    array (size=4)
      'kind' => string 'webfonts#webfont' (length=16)
      'family' => string 'Yesteryear' (length=10)
      'variants' => 
        array (size=1)
          0 => string 'regular' (length=7)
      'subsets' => 
        array (size=1)
          0 => string 'latin' (length=5)
  1 => 
    array (size=4)
      'kind' => string 'webfonts#webfont' (length=16)
      'family' => string 'Zeyada' (length=6)
      'variants' => 
        array (size=1)
          0 => string 'regular' (length=7)
      'subsets' => 
        array (size=1)
          0 => string 'latin' (length=5)
因此,使用上述数组,我无法轻松检索所需的数据。所以我不确定这是否意味着我必须重建阵列,如果是,如何重建


谢谢查看。

尝试此操作以获取值:在这里您将获得
项中所有数组的值

foreach($fonts['items'] as $val){

    echo $val['kind'];
    echo $val['family'];

    print_r($val['variants']);
    echo "======================<br>";
}
foreach($font['items']作为$val){
echo$val['kind'];
echo$val['family'];
打印($val['variants']);
回声“===============================
”; }
尝试此操作以获取值:在这里您将获得
项中所有数组的值

foreach($fonts['items'] as $val){

    echo $val['kind'];
    echo $val['family'];

    print_r($val['variants']);
    echo "======================<br>";
}
foreach($font['items']作为$val){
echo$val['kind'];
echo$val['family'];
打印($val['variants']);
回声“===============================
”; }
我想您正在寻找这样的产品:

我想您正在寻找这样的产品:

希望这个片段能对您有所帮助

$res1=json_decode($fonts,true);
$res2=$res1['items'];
$count=count($res2);
for($i=0;$i< $count;$i++)
{
    echo $res2[$i]['variants'][0];
}
$res1=json\u解码($font,true);
$res2=$res1['items'];
$count=计数($res2);
对于($i=0;$i<$count;$i++)
{
echo$res2[$i]['variants'][0];
}

希望这段代码对您有所帮助

$res1=json_decode($fonts,true);
$res2=$res1['items'];
$count=count($res2);
for($i=0;$i< $count;$i++)
{
    echo $res2[$i]['variants'][0];
}
$res1=json\u解码($font,true);
$res2=$res1['items'];
$count=计数($res2);
对于($i=0;$i<$count;$i++)
{
echo$res2[$i]['variants'][0];
}

转储有什么问题?看起来不错。你的问题很不清楚。是否要用随机字符串键替换相关的数字键以使读取更容易?转储有什么问题?看起来不错。你的问题很不清楚。你想用随机字符串键替换相关的数字键以使阅读更容易吗?是的,但是我正在尝试轻松地提取字体及其属性,而不必像关联数组一样循环…瑞克:我不知道还有什么比循环更好的选择,因为在
项中有多个数组,除非您知道确切的键,否则直接获取每个值将非常复杂。因此,我的假设是正确的,即我需要重建数组以使其具有关联性?但我建议使用循环,因为您的数组看起来很好。如果你重建数组,它会变得更复杂。是的,但是我正在尝试轻松地提取字体及其属性,而不必像关联数组一样循环遍历它。@Rick:我不知道还有什么比循环更好的选择,因为在
项中有多个数组
,除非您知道确切的键,否则直接获取每个值将非常复杂。因此,我的假设是正确的,即我需要重建数组以使其具有关联性?但我建议使用循环,因为您的数组看起来很好。如果你重建数组,它会变得更复杂。也许我的解释不够好…比如,我的应用程序的用户通过JSON列表从google的650多种字体列表中选择一种字体…好吧,现在我的应用程序知道用户想要X字体。因此,我需要从数组中提取X字体数据,以便将其传递给GoogleAPI…但是使用上面看到的数组,我无法轻松地使用非关联数组。因此,我的解决方案是重建它,但这是我想问的问题,这是否是最好的选择…我想我会继续重建它。也许我的解释不够好…好吧,例如,我的应用程序的用户通过JSON列表从google中的650多种字体列表中选择一种字体…好吧,现在我的应用程序知道用户想要X字体。因此,我需要从数组中提取X字体数据,以便将其传递给GoogleAPI…但是使用上面看到的数组,我无法轻松地使用非关联数组。因此,我的解决方案是重建它,但这是我想问的问题,如果这是最好的选择…我想我会去重建它。