0
$myDecodedArray = json_decode($mystring,true);
var_dump($myDecodedArray) ;

文字列に json_decode を使用し、次に var_dump を使用して、配列「myDecodedArray」の構造を理解できるようにしました。次の結果が得られました。

array(2) { 

        ["red"]=> array(1) 
                { ["10729,10730,10732"]=> array(13) 
                        { 
                            ["-2.75"]=> array(2) { [0]=> string(5) "+1.75" [1]=> string(5) "+1.50" }
                            ["-2.50"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(4) "0.00" [2]=> string(5) "-0.50" }
                            ["-2.25"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(5) "-1.75" [2]=> string(5) "-2.00" } 
                            ["-2.00"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(5) "-2.00" [2]=> string(5) "-2.25" } 
                            ["-1.75"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(4) "0.00" [2]=> string(5) "-2.25" } 
                            ["-1.50"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(4) "0.00" [2]=> string(5) "-2.25" }
                            ["-1.25"]=> array(1) { [0]=> string(5) "-2.25" } 
                            ["-1.00"]=> array(2) { [0]=> string(5) "+2.00" [1]=> string(5) "-2.25" } 
                            ["-0.75"]=> array(2) { [0]=> string(5) "+2.00" [1]=> string(5) "-2.25" } 
                            ["-0.50"]=> array(2) { [0]=> string(5) "+2.00" [1]=> string(5) "-2.25" } 
                            ["-0.25"]=> array(1) { [0]=> string(5) "-2.25" } 
                            ["0.00"]=> array(3)  { [0]=> string(5) "+1.75" [1]=> string(4) "0.00" [2]=> string(5) "-2.25" } 
                            ["+0.25"]=> array(2) { [0]=> string(5) "-2.00" [1]=> string(5) "-2.25" }
                        } 
                } 

        ["gray"]=> array(1) 
                { ["10730,10731"]=> array(8) 
                        { 
                            ["-1.00"]=> array(4) { [0]=> string(5) "+0.25" [1]=> string(4) "0.00" [2]=> string(5) "-0.25" [3]=> string(5) "-0.50" } 
                            ["-0.75"]=> array(5) { [0]=> string(5) "+0.75" [1]=> string(5) "+0.50" [2]=> string(5) "+0.25" [3]=> string(5) "-0.50" [4]=> string(5) "-0.75" } 

                            ["-0.50"]=> array(2) { [0]=> string(5) "+0.75" [1]=> string(5) "-0.75" } 
                            ["-0.25"]=> array(2) { [0]=> string(5) "+0.75" [1]=> string(5) "-0.75" } 
                            ["0.00"]=> array(11) { [0]=> string(5) "+3.25" [1]=> string(5) "+3.00" [2]=> string(5) "+2.75" [3]=> string(5) "+2.50" [4]=> string(5) "+2.25" [5]=> string(5) "+1.00" [6]=> string(5) "+0.75" [7]=> string(5) "-0.50" [8]=> string(5) "-0.75" [9]=> string(5) "-1.50" [10]=> string(5) "-1.75" } 

                            ["+0.25"]=> array(2) { [0]=> string(5) "+1.00" [1]=> string(5) "-0.50" } 
                            ["+0.50"]=> array(2) { [0]=> string(5) "+1.00" [1]=> string(5) "-0.50" } 
                            ["+0.75"]=> array(2) { [0]=> string(5) "+1.00" [1]=> string(5) "-0.50" }
                        } 
                } 
    }

私が得たのは、配列の配列の配列の配列です(4レベル)。それらの各配列をループして、その中の情報を読み取りたいと思います。これまでの私のコードは次のとおりです。

function read_array($arrayOfArrayes, $level = 0) {
   if (is_array($arrayOfArrayes)) {
       echo ' * '.$arrayOfArrayes.' (level: '.$level.')<br>';
   }
   elseif (!is_array($arrayOfArrayes)) {
       echo $arrayOfArrayes.' (level: '.$level.')<br>';
   }
  $level++;
   foreach ($arrayOfArrayes as $subArray) {
      read_array($subArray, $level);
     }
 }

 read_array($myDecodedArray);

ここに私の関数の出力があります。関数は配列の配列をループして各レベルを表示しますが、最後のレベル「4」の情報のみを表示しますが、各レベル内の情報が必要です。(!is_array) 条件が原因で発生していることはわかっています。しかし、別の方法でそれを行う方法がわかりません。前もって感謝します。

4

1 に答える 1