2017-08-02 8 views
1

私はウォーキングjson混合配列とオブジェクトを必要とします。jsonの混合配列とPHPを使ったオブジェクトをウォークする

私がしようとしますが、文字列変換

$epoJson = json_decode($json, true); 
foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($epoJson), RecursiveIteratorIterator::CATCH_GET_CHILD) as $key => $value) { 
    echo 'My node ' . $key . ' with value ' . $value . PHP_EOL; 
} 

注[ErrorException]配列を取得:私はもちろん、echovar_dumpまたは他を必要としませんが...私は入れて、他のコードを繰り返す必要があります値が仕事のために...コードは、それが唯一の視覚化の問題のためだエコー私は簡単な質問のためのecho OTの使用している場合...:$value場合、それは文字列ではないのですが...

は、混合JSONの散歩のためのいくつかの例やライブラリを検索してみ何も得られません。

http://sandbox.onlinephpfunctions.com/code/4bd4fbc5e43ed439add7d4ba497b830d498ce4ac

答えて

1

このコードは100%の作業使用してみてください:

注:$valueは良い時間を探した後、配列ではない文字列

<?php 

$epoJson = json_decode($epoJson, true); 
foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($epoJson), RecursiveIteratorIterator::CATCH_GET_CHILD) as $key => $value) { 
    //echo 'My node ' . $key . ' with value ' . $value . PHP_EOL; 
    echo $key.'<br />'; 
    echo "<pre>"; print_r($value); // $value is array not string 
    echo '<hr />'; 
} 

?> 
+0

私はのvar_dumpや印刷$値は必要ありません。配列とオブジェクトを混在させた複雑なjsonの繰り返しをお願いします。 – abkrim

0

ですが、私は何かがあったことを実現間違っている、なぜなら私はそれがオブジェクトだったときに検証しようとしたからです。

は、それは、オブジェクトの有無にかかわらず、多次元配列を横断し、1次元配列に変換し、少なくとも深さ

、Laravelは多かれ少なかれ、私が何をしたいんヘルパーを持っていることを覚えておいてください。

ちょうど私が必要としたもの。

/** 
    * Flatten a multi-dimensional associative array with dots. 
    * 
    * @param array $array 
    * @param string $prepend 
    * @return array 
    */ 
    public static function dot($array, $prepend = '') 
    { 
     $results = []; 

     foreach ($array as $key => $value) { 
      if (is_array($value) && ! empty($value)) { 
       $results = array_merge($results, static::dot($value, $prepend.$key.'.')); 
      } else { 
       $results[$prepend.$key] = $value; 
      } 
     } 

     return $results; 
    } 

http://sandbox.onlinephpfunctions.com/code/c9d8b0c293901325829219f5c03d655748802109

関連する問題