我想在不使用foreach的情况下获取最内层数组的值。如何获得$ f5和$ v5的值而不循环? .................................................. ..........................................嵌套数组中的最内部值
<?php
// json_arrays.php
//
$json1 = '{"upload":[{"email":"[email protected]","deviceid":"1234567",
"crecs":[{"id":"RUS","name":"Russa"},
{"id":"AUS","name":"Austria"},
{"id":"USA","name":"United States"}]}]}';
//
echo "<br> ------- <br>";
var_dump(json_decode($json1, true));
echo "<br> ------- <br>";
var_dump(json_decode($json1));
echo "<br> ------- <br>";
$a1 = json_decode($json1, true);
//
foreach ($a1 as $f1 => $v1) {
if ($f1 == "upload") {
$a2 = $v1;
foreach ($a2 as $f2 => $v2) {
$a3 = $v2;
foreach ($a3 as $f3 => $v3) {
echo "key: ".$f3."<br>";
echo "value: ".$v3."<br>";
if ($f3 == "crecs") {
$a4 = $v3;
echo " ------- <br>";
echo "[vardump a4]"."<br>";
var_dump($a4);
echo "<br> ------- <br>";
foreach ($a4 as $f4 => $v4) {
$a5 = $v4;
foreach ($a5 as $f5 => $v5) {
echo "key: ".$f5."<br>";
echo "value: ".$v5."<br>";
}
}
}
}
}
}
}
?>
如果你没有遍历所有的可能性,你会错过大部分'echo'命令。我们可以假设他们只是在那里进行调试,而你实际上并不需要它们吗?我的PHP有点生疏,但是你可以用'$ v1 = $ a1 [“来替换'foreach($ a1 as $ f1 => $ v1 {if($ f1 ==”upload“){...}}'上传“]; ...,或类似的东西,然后对''crecs''执行相同的操作,对于其他循环,我假设你确实需要遍历所有这些循环,因为你没有' t表示你感兴趣的元素 –
你是对的,echo cmds只用于调试,我问:“如何获得$ f5和$ v5的值而不循环?”。我希望能够使用像$ a [2] [1] [0] [0] [0/1/2]之类的东西?从您的答案看来,PHP不支持这一点?谢谢, – JohnD
不,我不是说PHP是有缺陷的,如果你愿意,你可以写'$ a [2] [1] [0] [0] [0/1/2]'我以为你不知道你想要什么值键,因为你只在代码中列出了''upload''和''crecs'',但是如果你知道所有的值,那么你没有理由不能这么做。 –