2010-04-22 59 views
5

假设你有一个关联数组什么是重新排列关联数组的最优雅的方法?

$hash['Fruit'] = 'Apple'; 
$hash['Name'] = 'Jeff'; 
$hash['Car'] = 'Ford'; 

,你不能改变在其中创建这些变量的顺序。所以Car总是在Name之后添加到数组中。等等,将Car添加到关联数组的开头而不是结束(默认)是最漂亮的方法?

+0

是你要对数组进行排序? – Galen 2010-04-22 20:46:49

+0

并且您是否尝试按字母顺序排序?或者你只是想把汽车推到最高处,而不会触动所有其他元素? – webbiedave 2010-04-22 20:49:24

+0

这是哪一句话? – webbiedave 2010-04-22 20:52:34

回答

8
$hash = array('Car' => 'Ford') + $hash; 
+0

嘿,伟大的思想*做*想象一样:D看到我的答案变量版本。 – erisco 2010-04-22 20:52:49

2

ksort()

但是你为什么会关心数组的内部命令呢?

+0

我想他是要求推动到数组的开头,这是一个很好的提示,虽然 – 2010-04-22 20:47:35

+0

我想到了这一点,但与他的真实数据计算出这种非常间接的解决方案并不总是工作。 – erisco 2010-04-22 20:50:56

+0

在这种情况下,我将使用foreach()稍后循环访问数组,并且出于显示目的,我希望某些值出现在顶部。 – 2010-04-22 20:52:29

1
array_reverse($hash, true); 

这不是一个很直接的解决方案,但一个是:

$value = end($hash); 
$hash = array(key($hash) => $value) + $hash; 
+0

是的,我读过这个;-)移动已添加到数组的项目的好方法。 – zerkms 2010-04-22 20:59:29

0

另一个窍门是 -

$new_items = array('Car' => 'Ford'); 
$hash = array_merge($new_items, $hash); 

可以重新安排新的数组键也。假设汽车第一则另一个领域(比如标识),那么阵列依然如此....

$new_items = array('Car' => 'Ford','Id'=>'New Id'); 
$hash = array_merge($new_items, $hash); 

的阵列将成为像

$hash['Car'] = 'Ford'; 
$hash['Id'] = 'New Id'; 
$hash['Fruit'] = 'Apple'; 
$hash['Name'] = 'Jeff'; 
相关问题