@AKLZephyr

Заменить значение массива?

Есть массив:

$input = [
   ['id' => 1, 'name' => 'a'],
   ['id' => 2, 'name' => 'b'],
   ['id' => 3, 'name' => 'c'],
   ['id' => 4, 'name' => 'd'],
];


И массив с ключами какие нужно заменить:
$replaceIds = [2 => 4];

В итоге: массив с id=2 нужно заменить на массив id=4 и id=4 удалить.

Набросал решение:
sandbox.onlinephpfunctions.com/code/23a3f86e6dcba8...

Есть ли более лучший способ?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$input = [
   ['id' => 1, 'name' => 'a'],
   ['id' => 2, 'name' => 'b'],
   ['id' => 3, 'name' => 'c'],
   ['id' => 4, 'name' => 'd'],
];
$replaceIds = [2 => 4];
$removeIds = array_values($replaceIds);
$result = array_map(
  function($el) use ($replaceIds) {
    if (array_key_exists($el['id'], $replaceIds)) {
      return ['id' => $replaceIds[$el['id']], 'name' => $el['name']];
    }
    return $el;
  },
  array_filter(
    $input,
    function($el) use ($removeIds) {
      return !in_array($el['id'], $removeIds);
    }
  )
);
print_r($result);
//Array(
//    [0] => Array(
//        [id] => 1
//        [name] => a
//    )
//    [1] => Array(
//        [id] => 4
//        [name] => b
//    )
//    [2] => Array(
//        [id] => 3
//        [name] => c
//    )
//)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы