【问题标题】:Array sorting as per value and corresponding key数组按值和对应键排序
【发布时间】:2013-07-30 06:21:06
【问题描述】:

我有一个这样的数组:

        Array
        (
           [1] => 0
           [2] => 1
           [4] => 1
           [5] => 4
           [6] => 2
           [7] => 0
           [8] => 2
           [9] => 7
           [10] => 2
           [11] => 2
           [12] => 2
           [17] => 12
           [18] => 17
           [19] => 0
           [20] => 19
           [21] => 20
           [22] => 20
           [23] => 20
           [24] => 0
         )

我想对数组进行排序,首先找到所有 0 值键索引,然后使用这个键值索引在数组中查找,例如 0 值键索引是 1,7,19,24,现在是 1,7,19,24在数组中找到值并获取相应的键,最后所有键序列都在新数组中。可能吗?

【问题讨论】:

  • 你试过什么?另外,您的问题对我来说似乎不清楚。你期望的结果数组是什么?
  • 你期望的数组(结果)是什么样的?
  • 0 是我的根元素,然后对应的键索引找到它是 1,7,19,24 然后在数组中找到 1,7,19,24 值所以对于 1 我们得到 2,4 现在这个2,4 是进一步检查,所以对于 2,我们得到 6,8,10,11,12,这个值进一步检查,所以对于 6,8,10,11,我们什么都没有,所以跳过,对于 12,我们得到 17,所以我想要这种类型检查值
  • 我的数组看起来像 Array ( [0] => 1 [1] => 2 [2] => 6 [3] => 8 [4] => 10 [5] => 12 [6] => 17 等等

标签: php arrays codeigniter sorting


【解决方案1】:
asort($cars);

example:
asort($cars);
echo "<pre>";
print_r($cars);
echo "</pre>";

【讨论】:

    【解决方案2】:
    asort($arr);
    $arr = array_keys($arr);
    print_r($arr);
    

    输出:

    Array
    (
        [0] => 7
        [1] => 1
        [2] => 19
        [3] => 24
        [4] => 2
        [5] => 4
        [6] => 10
        [7] => 12
        [8] => 11
        [9] => 8
        [10] => 6
        [11] => 5
        [12] => 9
        [13] => 17
        [14] => 18
        [15] => 20
        [16] => 21
        [17] => 23
        [18] => 22
    )
    

    【讨论】:

      【解决方案3】:
      $newTab = array();
      
      foreach ($tab as $k => $v)
      {
          $newTab[$v][] = $k;
      }
      

      生产:

      array (size=9)
        0 => 
          array (size=4)
            0 => int 1
            1 => int 7
            2 => int 19
            3 => int 24
        1 => 
          array (size=2)
            0 => int 2
            1 => int 4
        4 => 
          array (size=1)
            0 => int 5
        2 => 
          array (size=5)
            0 => int 6
            1 => int 8
            2 => int 10
            3 => int 11
            4 => int 12
         ....
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-31
        • 2018-09-12
        • 2013-09-14
        • 2016-04-17
        • 1970-01-01
        相关资源
        最近更新 更多