我想在不使用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'',但是如果你知道所有的值,那麼你沒有理由不能這麼做。 –