2017-02-21 110 views
-1

你好,我看起來像多維數組:PHP更改多維數組結構

array(13890) { 
    [0]=> 
    array(2) { 
    ["Icd"]=> 
    array(2) { 
     ["id"]=> 
     int(111) 
     ["nazwa"]=> 
     string(6) "DŻUMA" 
    } 
    ["ProjectIcd"]=> 
    array(0) { 
    } 
    } 
    [1]=> 
    array(2) { 
    ["Icd"]=> 
    array(2) { 
     ["id"]=> 
     int(566) 
     ["nazwa"]=> 
     string(7) "ŚWINKA" 
    } 
    ["ProjectIcd"]=> 
    array(0) { 
    } 
    } 

的等等。

我想改變它,所以它看起來就像這樣:

array(13890) { 
    [0]=> array(2) { 
     ["id"]=> 
     int(111) 
     ["text"]=> 
     string(6) "DŻUMA" 
    } 

這怎麼可能呢?

我想補充說,我想將數組轉換爲json並將其傳遞給select2 js in ajax。

這會是一個問題嗎?

+0

你有試過什麼嗎?這是一個簡單的'foreach'循環。 –

+0

我是新來的PHP,看雖然互聯網我coulndn't找到答案。對不起,如果它太白費問題。 – Aksebkit

回答

3

簡短的解決方案使用array_map功能:

// $arr is your initial array 

$new_arr = array_map(function($a){ 
    return ['id' => $a['Icd']['id'], 'text' => $a['Icd']['nazwa']]; 
}, $arr); 
+0

不錯,謝謝。我得到了g.results在select2 thoug中沒有定義。但這是另一個問題。 – Aksebkit

+0

@Aksebkit,不客氣 – RomanPerekhrest

0

我希望這是你想要的東西。

$res = []; 
$i = 0; 
foreach($array as $arr) { 
     //get keys 
     if (count($arr) > 0) { 
     $keys = array_keys($arr); 
     // loop through the keys and fetch data of those keys 
     // put in array 
     foreach($keys as $key) { 
      if ($arr[$key]) { 
       $res[$i]['id'] = $arr[$key]['id']; 
       $res[$i]['text'] = $arr[$key]['nazwa']; 
      } 
      $i++; 
     } 
    } 
} 

print_r($res); 
// To change array to json 
echo json_encode($res); 
+0

嘿,這很不錯。但是我如何將nazwa改爲文字? – Aksebkit

+0

更新了我的答案... – Naincy

0

所以,你可以簡單的創建一個新的數組,並添加有基於舊的陣列上你想要的值。然後你將數組轉換成一個帶有php函數的json字符串:json_encode()

$array = array("text"=>$old_array[0]["Icd"]["nazwa"]); 
echo json_encode($array);