2016-04-27 97 views
0

是否有一种简单的方法来对具有用于此任务的可变数组的数组进行排序? 例如:PHP - 使用另一个阵列对数组进行排序

$fruits [ 
    'Apple' => '12', 
    'Cherry' => '10', 
    'Lemon' => '34', 
    'Peach' => '6' 
] 

$order [ 
    1 => 'Peach', 
    2 => 'Other', 
    3 => 'Lemon', 
    4 => 'Other2', 
    5 => 'Apple', 
    6 => 'Cherry', 
    7 => 'Other3' 
] 

我想退掉这类型的数组:

$ordered_fruits [ 
    'Peach' => '6', 
    'Lemon' => '34', 
    'Apple' => '12', 
    'Cherry' => '10' 
] 
+0

见阵列的这个例子结合功能可能会帮助 http://www.w3schools.com/php/showphp。 asp?filename = demo_func_array_combine –

+1

没有排序,只是搜索并创建一个新阵列。 –

回答

4
$ordered_fruits = array(); 
foreach($order as $value) { 

    if(array_key_exists($value,$fruits)) { 
     $ordered_fruits[$value] = $fruits[$value]; 
    } 
} 
+1

太棒了,我花了一点时间给出答案。 –

3

用PHP功能使它:

$new = array_filter(array_replace(array_fill_keys($order, null), $fruits)); 
+0

PHP函数是多么有趣......,我们做了很多代码,并且使用了一些库函数。 –

+0

是的,它的图书馆有这么多的乐趣,如果不是这样我忘了他们的一半:) – splash58

1

排序的技术:

$result = array(); 

foreach($order as $value){ 
    if(array_key_exists($value, $fruits)){ 
     $result[$value] = $fruits[$value]; 
    } 
} 

结果

print_r($result); 

Array 
(
    [Peach] => 6 
    [Lemon] => 34 
    [Apple] => 12 
    [Cherry] => 10 
) 
2

试试这个:

$fruits = array(
    'Apple' => '12', 
    'Cherry' => '10', 
    'Lemon' => '34', 
    'Peach' => '6' 
); 

$order = array(
    1 => 'Peach', 
    2 => 'Other', 
    3 => 'Lemon', 
    4 => 'Other2', 
    5 => 'Apple', 
    6 => 'Cherry', 
    7 => 'Other3' 
); 

$result = array(); 
foreach ($order as $key => $value) { 
    if (array_key_exists($value, $fruits)) { 
    $result[$value] = $fruits[$value]; 
    } 
} 
print_r($result); 
+0

好工作........ –

相关问题