我有这个Json
输出,我想从中获得特定值,这是json
:
[
[
[
"a:1:{s:3:\"ALL\";d:100;}",
"a:1:{s:3:\"ALL\";d:200;}",
"a:1:{s:3:\"ALL\";d:89;}"
],
[
"a:1:{s:3:\"USD\";d:100;}"
],
[
"a:2:{s:3:\"ALL\";d:300;s:3:\"USD\";d:250;}"
],
[
"a:1:{s:3:\"ALL\";d:30;}",
"a:2:{s:3:\"ALL\";d:100;s:3:\"USD\";d:200;}"
],
[
"a:1:{s:3:\"USD\";d:200;}"
]
]
]
所以我只想得到第一个d
值,它们是数字,目前我尝试了这样的方法:
$values = explode('-',$this->currency);
return $values[0];
但它不工作,我知道我必须使用foreach
来获得其余的,但不知道如何获得一个的值。
EDIT我编写了以下代码:
$values = explode('-',$this->currency);
foreach ($values as $val){
$arr[] = unserialize($val);
}
return $arr;
而这就是我得到的
[
[
[
{
"ALL": 100
},
{
"ALL": 200
},
{
"ALL": 89
}
],
[
{
"USD": 100
}
],
[
{
"ALL": 300,
"USD": 250
}
],
[
{
"ALL": 30
},
{
"ALL": 100,
"USD": 200
}
],
[
{
"USD": 200
}
]
]
]
现在输出是正确的,但是我需要得到一些特定的值,比如在第一个数组中,我们有3个ALL
值,100,200,89,我想做一个循环,分别给我**100,200,89,这样我就可以得到它们的总和,剩下的是其他的数
第二次编辑
如果我只是
$values = explode('-',$this->currency);
return $values;
我得到这个结果:
[
[
[
"a:1:{s:3:\"ALL\";d:100;}",
"a:1:{s:3:\"ALL\";d:200;}",
"a:1:{s:3:\"ALL\";d:89;}"
],
[
"a:1:{s:3:\"USD\";d:100;}"
],
[
"a:2:{s:3:\"ALL\";d:300;s:3:\"USD\";d:250;}"
],
[
"a:1:{s:3:\"ALL\";d:30;}",
"a:2:{s:3:\"ALL\";d:100;s:3:\"USD\";d:200;}"
],
[
"a:1:{s:3:\"USD\";d:200;}"
]
]
]
1条答案
按热度按时间biswetbf1#
如果你使用Laravel,最好使用集合。假设$contents是包含序列化值的数组,你可以像下面这样反序列化。
你可以写同样的代码上面提到的速记如下:
使用键获取值
response是$selectedKey的集合,因此使用它可以很容易地获得sum或值的数组
你也可以做所有这一切,以及如下: