PHP: создать массив массивов, игнорируя пустые массивы

Мне нужно создать массив массивов.
Я использую array_map(null,$a,$b,$c) чтобы сделать это, и он работает нормально, однако, он не работает, если один из отображенных массивов не существует.

Чтобы обойти эту проблему, я использовал:

$myArray= array();
if (isset($a)) {
    array_push($myArray,$a);
}
if (isset($b)) {
    array_push($myArray,$b);
}
if (isset($c)) {
    array_push($myArray,$c);
}

Есть ли более элегантный / короткий способ написания этого?
Я пытался применить некоторые функции через array_map($function,$a,$b,$c) но без удачи.

2 ответа

Решение
$myArray = array_filter(array($a, $b, $c));

Вы можете использовать следующую функцию:

function joinArrays(){
  $arrays = func_get_args();
  $output = array();
  foreach($arrays as $array){
     if(!empty($array)) array_push($output, $array);
  }
  return $output;
}

вызывать как: joinArrays($a, $b, $c и т. д.);

Другие вопросы по тегам