2015-09-07 76 views
-1

我JSON像這樣(從嵌套排序)我怎樣才能把JSON到MySQL和PHP循環?

[ 
{"id":13},{"id":14}, 
{"id":15, 
    "children":[ 
      {"id":16},{"id":17},{"id":18} 
    ] 
}, 
{"id":19},{"id":20}, 
{"id":21, 
     "children":[ 
      {"id":22} 
     ] 
} 
] 

如何我PHP循環把這個JSON在MySQL

謝謝。

回答

0

與任何有效的JSON格式字符串一樣,您可以使用PHP內置的json_decode將其轉換爲可解析對象,然後遍歷這些參數。在這種情況下,從JSON字符串你給了(這似乎是一個數組)

$array = json_decode($string); 
foreach ($array as $val) { 
    //The object $val will be: 
    "id":13 
} 

如果它是嵌套的,你會做另一個foreach循環,並檢測是否需要進行環財產。例如,你可以在多種方式(通過$val性檢查的"children"財產,循環和檢查它是否是一個array,如果是則循環通過)做到這一點。這裏面的foreach循環迭代,你可以將其插入,或做你執行需要得到它在MySQL

你的問題是你想要它插入的格式和方式很模糊任何聲明。我建議展示一些代碼,你試過這樣其他人可以幫助你,知道你要去哪個方向。(這可能爲downvote的原因,而不是由路礦)

Looping through all the properties of object php

+0

我認爲他想他的數據存儲在MySQL。無法訪問它。 – aldrin27

+0

我編輯我的回答告訴他,他可以訪問數據,並用它在迭代'foreach'插入它(管理費用,但我不知道他想用它做什麼)。感謝您的反饋! –

0

只要把你的有效的JSON內json_decode並將其分配給一個PHP數組如下

//$php_arr = json_decode('YOUR_JSON'); 
$php_arr = json_decode('[{"id":13},{"id":14},{"id":15,"children":[{"id":16},{"id":17},{"id":18}]},{"id":19},{"id":20},{"id":21,"children":[{"id":22}]}]'); 

/*comment the following 3 lines when done*/ 
echo "<pre>"; 
print_r($php_arr); 
echo "</pre>"; 
/*comment the above 3 lines when done*/ 

輸出

Array 
(
    [0] => stdClass Object 
     (
      [id] => 13 
     ) 

    [1] => stdClass Object 
     (
      [id] => 14 
     ) 

    [2] => stdClass Object 
     (
      [id] => 15 
      [children] => Array 
       (
        [0] => stdClass Object 
         (
          [id] => 16 
         ) 

        [1] => stdClass Object 
         (
          [id] => 17 
         ) 

        [2] => stdClass Object 
         (
          [id] => 18 
         ) 

       ) 

     ) 

    [3] => stdClass Object 
     (
      [id] => 19 
     ) 

    [4] => stdClass Object 
     (
      [id] => 20 
     ) 

    [5] => stdClass Object 
     (
      [id] => 21 
      [children] => Array 
       (
        [0] => stdClass Object 
         (
          [id] => 22 
         ) 

       ) 

     ) 

) 

現在你有PHP數組做什麼你想要什麼

foreach($php_arr as $arr){ 
    if(!isset($arr['children'])){ 
     $q = "insert into tbl(id) values('".$arr['id']."')"; 
    }else{ 
     //your logic 
    } 
} 
0

你需要使用json_decode函數來解碼JSON數據。然後使用foreach循環來處理數據。

嘗試例如

$str = ' 
    [{"id":13},{"id":14},{"id":15,"children":[{"id":16},{"id":17},{"id":18}]},{"id":19},{"id":20},{"id":21,"children":[{"id":22}]}] 
'; 

$json = json_decode($str); 

//var_dump($json); 
foreach ($json as $item) 
{ 
    //The object $val will be: 
    echo $item->id."<br />"; 
    //You INSERT query is here 
    //echo "INSERT INTO table (field) VALUE ($item->id)"; 
    $query = mysqli_query($conn, "INSERT INTO table (field) VALUE ($val->id)"); 
}