【问题标题】:Custom Sorting Arrays自定义排序数组
【发布时间】:2013-02-25 13:01:58
【问题描述】:
$original_ids = array(1, 2, 3, 4); //<--- Original values without sorted.
$sorted_ids = array(4, 1, 3); //<--- Fixed values (sort by this)
$result_ids = array(); //<--- The result array after sorted

我只是想重新检查匹配的数组并按$sorted_ids 排序(如果你理解的话)

$result_ids 必须是...array(4, 1, 3, 2)2 不在 $original_ids 数组中,所以将其放在 last 中)

我绑定到类似...的代码:

foreach ($sorted_ids as &$id) {
    if (in_array($id , $original_ids)) {
        $result_ids[] = $id;
    } else {

    }
}

但我不知道如何将不匹配的数组推送到 $result_ids 数组的最后一个。

不明白的请留言。

【问题讨论】:

    标签: php arrays sorting push


    【解决方案1】:
    $result_ids = array_merge(
       array_intersect($sorted_ids, $original_ids),  // the values that match sorter
       array_diff($original_ids, $sorted_ids)        // append the rest
    );
    

    【讨论】:

      【解决方案2】:
      foreach ($sorted_ids as $id) {
          if (in_array($id , $original_ids)) {
              $result_ids[] = $id;
          } else {
              $addToEnd[] = $id
          }
      }
      
      array_merge($result_ids, $addToEnd);
      

      顺便说一句,您对&amp;$id 的使用毫无意义,因为您推动了它的价值。您不需要参考。

      【讨论】:

        【解决方案3】:
        array_merge($sorted_ids, array_diff($original_ids, $sorted_ids))
        

        【讨论】:

        • 请注意,这也会添加排序器中存在的值,而不是原始数组中的值
        • 呃我没听懂你,所以你可以在array_merge中使用array_intersect
        【解决方案4】:
        $original_ids = array(1, 2, 3, 4); 
        $sorted_ids = array(4, 1, 3);
        foreach($original_ids as $key=>$val){
            if(in_array($val,$sorted_ids)){
               unset($original_ids[$key]);
            }
        }
        
        $result_ids = array_merge($sorted_ids,$original_ids);
        
        print_r($result_ids);
        

        【讨论】:

          【解决方案5】:

          您可以使用此代码:

          <?php
          
          foreach ($sorted_ids as &$id) {
              if (sort($id)) {
                  $result_ids[] = $id;
              } else {
          
              }
          }
          
          ?>
          

          它将完全满足您的需要

          【讨论】:

            猜你喜欢
            • 2010-10-23
            • 1970-01-01
            • 2020-08-27
            • 2012-06-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-25
            • 1970-01-01
            相关资源
            最近更新 更多