Это довольно просто реализовать.
function orderedValuesArray(array &$associativeArray, array $keys, $missingKeyDefault = null)
{
$result = [];
foreach ($keys as &$key) {
if (!array_key_exists($key, $associativeArray)) {
$result[] = $missingKeyDefault;
} else {
$result[] = $associativeArray[$key];
}
}
return $result;
}
$arr = [
'a' => 1,
'b' => 2,
'c' => 3
];
list($a, $b, $c) = orderedValuesArray($arr, ['a','AAA', 'c', 'b']);
echo $a, ', ', $b, ', ', $c, PHP_EOL;
вывод: 1, , 3
- меньше печатать на стороне использования
- нет зависимости порядка элементов (в отличие от
array_values
)
- прямой контроль над именами переменных (в отличие от
extract
) - меньший риск конфликта имен, улучшенная поддержка IDE