2017-08-02 54 views
1

我需要走動的jones混合數組和對象。步行通過json混合數組和對象與php

我嘗試,卻得到了一個[ErrorException]數組字符串轉換

$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; 
} 

注:我不需要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

尋找一個很好的時間後,我意識到出事錯誤的,因爲我試圖驗證它是否是一個對象。

記住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