PHP массив объединяет пустые значения, всегда менее приоритетные


Моя цель - объединить 2 разных массива.

У меня есть таблица "a" и "b". Данные из таблицы "а" являются более приоритетными.

ПРОБЛЕМА: если ключ из "a" содержит пустое значение, я хотел бы взять ключ из таблицы "b".

Вот мой код:

<?php

$a = array('key1'=> "key1 from prioritar", 'my_problem'=> "");

$b = array('key1'=> "key1 from LESS prioritar", 'key2'=>"key2 from LESS prioritar", 'my_problem'=> "I REACHED MY GOAL!");

$merge = array_merge($b, $a);

var_dump($merge);

Есть ли способ сделать это в одной функции, не делая ничего подобного ниже?

foreach($b as $key => $value)
{
  if(!array_key_exists($key, $a) || empty($a[$key]) ) {
    $a[$key] = $value;
  }
}
Author: Bast, 2015-12-18

2 answers

Вы можете использовать array_replace и array_filter

$mergedArray = array_replace($b, array_filter($a));

Результатом будет:

array(3) {
  ["key1"]=>
  string(19) "key1 from prioritar"
  ["key2"]=>
  string(24) "key2 from LESS prioritar"
  ["my_problem"]=>
  string(18) "I REACHED MY GOAL!"
}
 5
Author: Matei Mihai, 2015-12-18 08:16:55

Просто массив_фильтра() $a который удалит любой элемент со значением ''.

$merge = array_merge($b, array_filter($a));
 2
Author: Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ, 2015-12-18 08:19:12