如何在php上更新密钥启动?

问题描述 投票:-1回答:2

我的第一个数组如下:

$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

我该怎么做?

php arrays key
2个回答
1
投票

您可以像这样重新索引键:

$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
)

0
投票

我不确定你真正需要什么。假设你想以递归方式做到这一点,我希望这会有所帮助:

$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;

它将使用想要的命名样式重写您的数组。

© www.soinside.com 2019 - 2024. All rights reserved.