Php 如何在多维数组中重命名匿名密钥

Php 如何在多维数组中重命名匿名密钥,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,如何在每个数组中将0重命名为['img'],将1重命名为['link'] 试一试: 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

如何在每个数组中将0重命名为['img'],将1重命名为['link']

试一试:

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"
  ]
]
但它不起作用:c
php是否有用于此任务的函数

您需要通过引用访问它,现在您只是更改数据的一个副本,而根本不更改数据

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

你有两种方法可以做到这一点

第一,仅在参数中输入
&

foreach($data as &$array){
    $array['img'] = $array[0];
    $array['link'] = $array[1];
    unset($array[0], $array[1]);
}
这将允许更改
$array


另一种方法是使用
数组\u映射

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

答复:


在这两种情况下。

$keys=['img','link'];array_walk($myArray,function(&$value){$value=array_combine($keys,$value);})
$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"
  }
}