2017-03-09 50 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]); 
}