从其默认顺序重新排序数组

时间:2013-10-27 14:01:35

标签: php arrays

我有一个以这种方式生成的数组,因为它是以这种方式生成的,并且改变生成方式是一项任务。这是它的一部分,有更多。

$name['Age'] = '25';
$name['Location'] = 'Seattle';
$name['Last'] = 'Gates';
$name['First'] = 'Bill';

print_r($name);

如果生成后如何将其顺序更改为以下内容?

$name['First'] = 'Bill';
$name['Last'] = 'Gates';
$name['Age'] = '25';
$name['Location'] = 'Seattle';

print_r($name);

1 个答案:

答案 0 :(得分:4)

是的,有一个函数可以让你根据自己的标准按键重新排序关联数组。它被称为uksort

$key_order = array_flip(['First', 'Last', 'Age', 'Location']);
uksort($name, function($key1, $key2) {
  return $key_order[$key1] - $key_order[$key2];
});

print_r($name);

Demo


说了这么多,我不禁想知道你是不是需要一些不同的东西:改变你的阵列的输出的顺序。例如:

$output_order = ['First', 'Last', 'Age', 'Location'];
foreach ($output_order as $key) {
  echo $key, ' => ', $name[$key], PHP_EOL;
}