繁体   English   中英

PHP。 按键对数组元素进行排序

[英]PHP. Sort array element on top by key

$key = "cat"
$array = array( dog,
                bird, 
                cat,
                moon );

需要这样的命令(通过键): 猫,狗,鸟,月亮。

$ key =“ cat” ,因此字符串“ cat”必须是数组的第一个元素。 怎么做?

您实际上并没有进行排序,只是将数组中的某些内容移到了开头。 它可能更简单,但这是一种方法:

array_unshift($array, current(array_splice($array, array_search($key, $array), 1))); 
  • array_search()查找包含$key的元素的索引
  • array_splice()删除该元素
  • array_unshift()将元素添加到数组中

以上所有解决方案都可以在提供的输入数组中正常工作

$array  = array('dog','bird', 'cat','moon');

但是,如果输入数组处于关联数组中,则上述解决方案将不起作用。 请参阅下面更改后的输入数组:

$array = array('frist' => 'foo', 'dog','bird', 'cat','moon', 'cat');

为了提高性能,可以使用以下功能。 它没有调用太多内置PHP数组函数的开销。 而且,它将同时作用于顺序和关联的PHP数组。 请参见下面的代码段:

功能定义

function moveToTop($array, $key){
      foreach ($array as $index => $value) ($value != $key) ? $newArray[$index] = $value : '';
      array_unshift($newArray, $key);
      return $newArray;
    }

函数调用

moveToTop($array, $key)

输出量

Array
    (
        [0] => cat
        [frist] => foo
        [1] => dog
        [2] => bird
        [3] => moon
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM