如何在PHP中将json数据转换为可访问的数组?
我从GoogleAPI获得了一个JSON字体列表,我想在我的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
$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…但是使用上面看到的数组,我无法轻松地使用非关联数组。因此,我的解决方案是重建它,但这是我想问的问题,如果这是最好的选择…我想我会去重建它。