2017-02-21 18 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に変換し、それをajaxのselect2 jsにフィードしたいと思います。

これが問題になるかどうか

+0

何か試しましたか?それは単純な 'foreach'ループです。 –

+0

私はPHPに新しいと私はcoulndn'tが答えを見つけることがインターネットを見ています。申し訳ありませんが、それもnooby質問です。 – Aksebkit

答えて

3

ショートソリューション。その後、PHP関数を使用してjson文字列に配列を変換しますjson_encode()

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

ニース、ありがとう。 g.resultsはselect2 thougで定義されていません。しかしそれは別の質問です。 – Aksebkit

+0

@Aksebkit、ようこそ – RomanPerekhrest

0

私はこれがあなたが望むものであることを望みます。ですから、新しい配列をシンプル作成することができ、そこにあなたが古い配列に基づいて必要な値を追加、

// $arr is your initial array 

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

ねえ、それはかなり良いですが、どうやってテキストにナスワを変えるのですか? – Aksebkit

+0

私の答えを更新... – Naincy

0

array_map機能を使用して

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