многосортный массив — PHP array_multisort с некоторыми отсутствующими ключами

В двух массивах мне не хватает ключей ($billing). Есть ли способ, которым я могу игнорировать, пропустить или просто не принимать эту итерацию массива в рассмотрение и все же сортировать массив?

Я получаю сообщение об ошибке:

array_multisort (): аргумент # 1 должен быть массивом или флагом сортировки

foreach ($table as $key => $row)
{
$billing[$key]  = $row['billing']['date_due'];
}

if ($_GET['billing']=='desc') {array_multisort($billing, SORT_DESC, $table);}
else {array_multisort($billing, SORT_ASC, $table);}

0

Решение

Вы можете просто проверить, установлена ​​ли переменная / ключ или нет:

<?php
foreach ($table as $key => $row) {
$billing[$key]  = isset($row['billing']['date_due']) ? $row['billing']['date_due'] : null;
}

// $billing doesn't exist, if $table is empty
if (!empty($billing)) {
array_multisort($billing, ($_GET['billing']=='desc' ? SORT_DESC : SORT_ASC), $table);
} else {
array_multisort($table); // or simply sort($table);
}

Другим способом является инициализация $billing до foreach: $billing = [];,

1

Другие решения

Других решений пока нет …