我的第一个数组如下:
$photoList = array(
array(
'id' => 1,
'name' => 'chelsea.jpg'
),
array(
'id' => 2,
'name' => 'mu.jpg'
),
array(
'id' => 3,
'name' => 'city.jpg'
)
);
我的第二个数组是这样的:
photo = array('cover1'=>'liverpool.jpg', 'cover2'=>'city.jpg');
我的代码是这样的:
$photo = array_filter($photo, function($item) use ($photoList) {
return in_array($item, array_column($photoList, 'name')) ;
});
if (empty($photo))
$photo=null;
如果我运行:echo '<pre>';print_r($photo);echo '</pre>';
,结果如下:
Array
(
[cover2] => city.jpg
)
我想要这样的结果:
Array
(
[cover1] => city.jpg
)
因此,如果没有cover1,则cover2变为cover1
我该怎么做?
您可以像这样重新索引键:
$photoList = array(
array(
'id' => 1,
'name' => 'chelsea.jpg'
),
array(
'id' => 2,
'name' => 'mu.jpg'
),
array(
'id' => 3,
'name' => 'city.jpg'
)
);
$photo = array('cover1'=>'liverpool.jpg', 'cover2'=>'city.jpg');
$photo = array_filter($photo, function($item) use ($photoList) {
return in_array($item, array_column($photoList, 'name')) ;
});
if (empty($photo)){
$photo = null;
} else {
$idx = 1 ;
foreach ($photo as $key => $value) {
unset($photo[$key]);
$photo['cover'.$idx++] = $value;
}
}
print_r($photo);
产出:
Array
(
[cover1] => city.jpg
)
我不确定你真正需要什么。假设你想以递归方式做到这一点,我希望这会有所帮助:
$label = 'cover';
$index = 1;
$a_keys = array_keys($photo);
$new_photo = [];
foreach($a_keys AS $k=>$v){
$new_photo[$label.$index] = $photo[$k];
$index++;
}
$photo = $new_photo;
它将使用想要的命名样式重写您的数组。