2017-02-21 129 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);