2014-03-12 53 views
0

是否可以使用自定义顺序通过键排序数组? 我有一个表示顺序的字符串数组。使用带排序字符串的数组按键排序数组

$order = array('ccc','aaa','xxx','111'); 
$myarray = array('ccc' => 'value1','aaa' => 'value2','xxx' => 'value3', 
        'BBB' => 'value11','ddd' => 'value31') 

现在我想数组与关键“CCC”的elemnts在第一位置进行排序,则n此元素与关键AAA ...,并在年底应该是不属于元素在排序列表中。

这是可能的吗?

编辑:第二个“CCC”是我的错 - 对不起

+1

你不能有一个以上的项目用PHP数组一样'key'。例如'cccc' – SajithNair

+0

在http://stackoverflow.com/questions/17364127/reference-all-basic-ways-to-sort-arrays-and-data-in-php向下滚动到**排序到手册,静态订单** – Barmar

回答

0

在操作中查看https://eval.in/118734

<?php 

$order = array('ccc','xxx','aaa','111'); 
$myarray = array('ccc' => 'value1','aaa' => 'value2','xxx' => 'value3', 
        'ddd' => 'value31'); 

$temp = array(); 
foreach($order as $o) { 
    if(array_key_exists($o, $myarray)) { 
     $temp[$o] = $myarray[$o]; 
    } 
} 

$new = array_merge($temp, $myarray); 
print_r($new); 

?> 
0

我只是有,因为我是有使用array_multisort()和ksort()类似的问题上想一想。

但是在你的情况下,如果代码片段是正确的,将不可能,因为值为'value11'的第二个'ccc'键将覆盖前一个。


php > $myarray = array('ccc' => 'value1','aaa' => 'value2','xxx' => 'value3','ccc' => 'value11','ddd' => 'value31'); 
php > print_r($myarray); 
Array 
(
    [ccc] => value11 
    [aaa] => value2 
    [xxx] => value3 
    [ddd] => value31 
)