【问题标题】:How to sort array keys by other array keys? [duplicate]如何按其他数组键对数组键进行排序? [复制]
【发布时间】:2013-12-04 11:47:46
【问题描述】:

例如,我有两个数组,例如:

$first_array = array(
    1 => 'a',
    2 => 'b',
    3 => 'c',
    4 => 'd',
    5 => 'e'
);

$second_array = array(
    1 => 'not important',
    4 => 'not important',
    3 => 'not important',
    5 => 'not important',
    2 => 'not important',
);

是否有任何函数可以按第二个数组键的顺序排列第一个数组键(带有值)?或者我只需要循环第二个数组并首先按键重新创建?

更新: 结果值应按秒数组键顺序排列

$result = array(
    1 => 'a',
    2 => 'd',
    3 => 'c',
    4 => 'e',
    5 => 'b'
);

【问题讨论】:

  • ?我不明白?预期的输出是什么?
  • 不,你必须使用循环。
  • 与流行的看法相反,php 没有适用于所有事物的函数/方法。
  • 函数头是什么?
  • @gwillie 只是不想重新发明自行车

标签: php arrays


【解决方案1】:

同样的问题已经发布了

Sort array by keys of another array

Sort an Array by keys based on another Array?

希望会有所帮助!

【讨论】:

    【解决方案2】:

    你可以做这样的事情......

    <?php
    $first_array = array(
        1 => 'a',
        2 => 'b',
        3 => 'c',
        4 => 'd',
        5 => 'e'
    );
    
    $second_array = array(
        1 => 'not important',
        4 => 'not important',
        3 => 'not important',
        5 => 'not important',
        2 => 'not important',
    );
    
    
    foreach($first_array as $k=>$v)
    {
    $second_array[$k]=$v;
    }
    
    $result = array_values($second_array);
    array_unshift($result, "dummy");
    unset($result[0]);
    print_r($result);
    

    输出:

    Array
    (
        [1] => a
        [2] => d
        [3] => c
        [4] => e
        [5] => b
    )
    

    【讨论】:

      【解决方案3】:

      您可以使用单个 foreach() 循环和 array_flip();和array_combine();

           $f = array(
          1 => 'a',
          2 => 'b',
          3 => 'c',
          4 => 'd',
          5 => 'e'
      );
      $s = array(
          1 => 'dummy',
          4 => 'dummy',
          3 => 'dummy',
          5 => 'dummy',
          2 => 'dummy',
      );
      $c=array();
      $j=1;
      foreach($s as $k=>$v){
      
      $c[]=$f[$k];
      
      }
      $f=array_flip($f);
      $c=array_combine($f,$c);
      
      print_r($c);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多