doulong6761 2015-02-21 02:44
浏览 29
已采纳

如果某些项满足特定条件,则将其移动到数组的末尾

I have an array of paths that I would like to sort ...

Array
(
    /something/foo1
    /something/special/foo2
    /something/foo3
    /something/special/foo4
    /something/foo5
    /something/special/foo6
)

... so that all paths that contain /special/ end up at the end of the array like this:

Array
(
    /something/foo1
    /something/foo3
    /something/foo5
    /something/special/foo2
    /something/special/foo4
    /something/special/foo6
)

The original sort order of paths must remain the same (so 1,2,3,4,5,6 => 1,3,5,2,4,6). Is there an elegant way to do this? Can this be implemented by using the usort function?

  • 写回答

2条回答 默认 最新

  • dongxiezhi9564 2015-02-21 02:49
    关注

    you can use unset and append [], like so

    $x = array(1,2,3);
    $x[] = $x[1];
    unset($x[1]);
    print_r($x);
    
    Array
    (
        [0] => 1
        [2] => 3
        [3] => 2
    )
    

    You can thus loop over the array, test each element, and flip to the end the ones that contain the pattern.

    $len = count($a);
    for ($i=0; $i<$len; $i++) {
        if (...) {
            $a[] = $a[i];
            unset($a[i]);
        }
    }
    

    Edit: php's arrays are lists, hashes and arrays simultaneously. It is possible to move an element to the end while retaining its index! For example

    $a = array(1,2,3);
    
    $t = $a[1];
    unset($a[1]);
    $a[1] = $t;
    
    print_r($a);
    Array
    (
        [0] => 1
        [2] => 3
        [1] => 2
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角