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"
]
]
如何在每个数组中将0重命名为['img']和1到['link']?
试试这个:
foreach($data as $array){
$array['img']=$array[0];
unset($array[0]);
$array['link']=$array[1];
unset($array[1]);
}
但它不起作用:c php有这项任务的功能吗?
答案 0 :(得分:0)
您需要通过引用访问它,此时您只需更改数据副本而不更改数据。
foreach($data as &$array){
$array['img'] = $array[0];
$array['link'] = $array[1];
unset($array[0], $array[1]);
}
答案 1 :(得分: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"
}
}
在这两种情况下。