2016-07-12 103 views
0

我有这个数组,但我想按照我的标准对其进行排序。PHP Array按标准排序

我想如果“国家”和“顶部”是相同的,那么他们希望在一个地方。稍微低于我的意思的例子。

$array = array(
    array("city" => "New York", "country" => "USA", "top" => "1"), 
    array("city" => "London", "country" => "UK", "top" => "1"), 
    array("city" => "Sofia", "country" => "BG", "top" => "1"), 
    array("city" => "Belgrad", "country" => "SRB", "top" => "2"), 
    array("city" => "Varna", "country" => "BG", "top" => "2"), 
    array("city" => "LA", "country" => "UK", "top" => "1"), 
    array("city" => "Bat", "country" => "USA", "top" => "1") 
); 

这里是数组:

Array 
(
    [0] => Array 
     (
      [city] => New York 
      [country] => USA 
      [top] => 1 
     ) 

    [1] => Array 
     (
      [city] => London 
      [country] => UK 
      [top] => 1 
     ) 

    [2] => Array 
     (
      [city] => Sofia 
      [country] => BG 
      [top] => 1 
     ) 

    [3] => Array 
     (
      [city] => Belgrad 
      [country] => SRB 
      [top] => 2 
     ) 

    [4] => Array 
     (
      [city] => Varna 
      [country] => BG 
      [top] => 2 
     ) 

    [5] => Array 
     (
      [city] => LA 
      [country] => USA 
      [top] => 1 
     ) 

    [6] => Array 
     (
      [city] => Bat 
      [country] => UK 
      [top] => 1 
     ) 
) 

我想这样的结果:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [city] => New York 
        [country] => USA 
        [top] => 1 
       ) 

      [1] => Array 
       (
        [city] => LA 
        [country] => USA 
        [top] => 1 
       ) 
      [2] => Array 
       (
        [top_cities] => 2 
       ) 
     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [city] => London 
        [country] => UK 
        [top] => 1 
       ) 
      [1] => Array 
       (
        [city] => Bat 
        [country] => UK 
        [top] => 1 
       ) 
      [2] => Array 
       (
        [top_cities] => 2 
       ) 
     ) 

    [2] => Array 
     (
      [0] => Array 
       (
        [city] => Sofia 
        [country] => BG 
        [top] => 1 
       ) 
     ) 

    [3] => Array 
     (
      [city] => Belgrad 
      [country] => SRB 
      [top] => 2 
     ) 

    [4] => Array 
     (
      [city] => Varna 
      [country] => BG 
      [top] => 2 
     ) 
) 

标准(必须匹配): 国家 顶部 和怎么算顶部有这个数组中(总和)

我会很格拉夫ul如果有人提出一个想法如何处理这个问题。提前致谢。

+0

可能是你的预期输出是错误的,或者很不清楚的逻辑。 – bansi

+0

从'foreach'开始 –

+0

@u_mulder好的,但后来。你有没有想法如何做到这一点? – diank

回答

1

请尝试下面的代码。结果有amall修改。但我相信它会适用于你

$array = array(
    array("city" => "New York", "country" => "USA", "top" => "1"), 
    array("city" => "London", "country" => "UK", "top" => "1"), 
    array("city" => "Sofia", "country" => "BG", "top" => "1"), 
    array("city" => "Belgrad", "country" => "SRB", "top" => "2"), 
    array("city" => "Varna", "country" => "BG", "top" => "2"), 
    array("city" => "LA", "country" => "UK", "top" => "1"), 
    array("city" => "Bat", "country" => "USA", "top" => "1") 
); 

$newArray = array(); 
foreach($array as $key => $val){ 
    $newArray[$val['country']][] = $val; 
} 
print_r($newArray);