2017-03-09 86 views
0
array:4 [▼ 
    0 => array:2 [▼ 
    0 => "chrysanthemum.jpg" 
    1 => "http://site.loc/1" 
    ] 
    1 => array:2 [▼ 
    0 => "desert.jpg" 
    1 => "http://site.loc/2" 
    ] 
    2 => array:2 [▼ 
    0 => "hydrangeas.jpg" 
    1 => "http://site.loc/3" 
    ] 
    3 => array:2 [▼ 
    0 => "jellyfish.jpg" 
    1 => "http://site.loc/4" 
    ] 
] 

如何在每個數組中將['img']和1重命名爲['link']?如何重命名多維數組中的匿名鍵

嘗試這樣的:

foreach($data as $array){ 
      $array['img']=$array[0]; 
      unset($array[0]); 
      $array['link']=$array[1]; 
      unset($array[1]); 
     } 

,但它不工作:C PHP確實有這個任務的功能?

+0

'$ keys = ['img','link']; array_walk($ myArray,function(&$ value){$ value = array_combine($ keys,$ value);});'' –

回答

0

你有兩種方法可以做到這一點。

第一,只能把對參數的&

foreach($data as &$array){ 
    $array['img']=$array[0]; 
    unset($array[0]); 
    $array['link']=$array[1]; 
    unset($array[1]); 
} 

這將允許改變$array


的另一種方法是使用array_map

$data = array_map(function($data) { 
    return [ 
     'img' => $data['0'], 
     'link' => $data['1'] 
    ]; 
}, $data); 

響應:

array(4) { 
    [0]=> 
    array(2) { 
    ["img"]=> 
    string(17) "chrysanthemum.jpg" 
    ["link"]=> 
    string(17) "http://site.loc/1" 
    } 
    [1]=> 
    array(2) { 
    ["img"]=> 
    string(10) "desert.jpg" 
    ["link"]=> 
    string(17) "http://site.loc/2" 
    } 
    [2]=> 
    array(2) { 
    ["img"]=> 
    string(14) "hydrangeas.jpg" 
    ["link"]=> 
    string(17) "http://site.loc/3" 
    } 
    [3]=> 
    array(2) { 
    ["img"]=> 
    string(13) "jellyfish.jpg" 
    ["link"]=> 
    string(17) "http://site.loc/4" 
    } 
} 

在這兩種情況。

0

您需要通過引用來訪問它,現在您只需更改數據的副本而不會更改數據。

foreach($data as &$array){ 
    $array['img'] = $array[0]; 
    $array['link'] = $array[1]; 
    unset($array[0], $array[1]); 
}