加入收藏 | 设为首页 | 会员中心 | 我要投稿 无锡站长网 (https://www.0510zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php按键排序多维数组

发布时间:2022-11-01 15:01:22 所属栏目:PHP教程 来源:转载
导读: php按键排序多维数组
phpsorting
php按键排序多维数组,php,sorting,Php,Sorting,假设我有一系列的array(8) { [0] => array(1) {'Peter' =>int(4) } [1] => array(1) {'Piper' =>int(4

php按键排序多维数组

phpsorting

php按键排序多维数组,php,sorting,Php,Sorting,假设我有一系列的array(8) { [0] => array(1) {'Peter' =>int(4) } [1] => array(1) {'Piper' =>int(4) } [2] => array(1) {'picked' =>int(4) } [3] => array(1) {'peck' =>int(4)

假设我有一系列的

array(8) {
  [0] =>
  array(1) {
    'Peter' =>
    int(4)
  }
  [1] =>
  array(1) {
    'Piper' =>
    int(4)
  }
  [2] =>
  array(1) {
    'picked' =>
    int(4)
  }
  [3] =>
  array(1) {
    'peck' =>
    int(4)
  }
  [4] =>
  array(1) {
    'pickled' =>
    int(4)
  }

我如何根据关键示例(Peter)对这个多维数组进行排序。我试着用

ksort($arr);

但它只返回一个布尔值

我想要的输出

array(8) {
      [0] =>
      array(1) {
        'peck' =>
        int(4)
      }
      [1] =>
      array(1) {
        'Peter' =>
        int(4)
      }
      [2] =>
      array(1) {
        'picked' =>
        int(4)
      }

      [3] =>
      array(1) {
        'pickled' =>
        int(4)
      }
      [4] =>
      array(1) {
        'piper' =>
        int(4)
    }

数组应按键和升序排序

像这样使用usort排序,检查

ksort()

方法执行就地排序。因此,虽然它只返回一个布尔值(正如您正确指出的那样),但它会将

$arr

中的值按排序顺序进行变异。请注意,根据预期的输出,您似乎希望执行不区分大小写的搜索。为此,您需要使用

SORT\u标志\u CASE

SORT标志。因此PHP多维数组,与其调用

ksort($arr)

,不如使用

ksort($arr,SORT\u FLAG\u CASE)

。您可以在中看到

ksort()

如何使用排序标志。希望有帮助

你可以这样做

$temp = array_map(function($a){
    return key($a); // fetching all the keys
}, $arr);
natcasesort($temp); // sorting values case insensitive
$result = [];
// logic of sorting by other array
foreach($temp as $v){
    foreach($arr as $v1){
        if($v == key($v1)){
            $result[] = $v1;
            break;
        }        
    }
}

输出

Array
(
    [0] => Array
        (
            [peck] => 4
        )
    [1] => Array
        (
            [Peter] => 4

php 比较多维数组_php定义多维空数组_PHP多维数组

) [2] => Array ( [picked] => 4 ) [3] => Array ( [pickled] => 4 ) [4] => Array ( [Piper] => 4 ) )

使用print_r($arr)函数打印数组并在此处显示输出我尝试了不同的函数,如array_multisort、ksort,但它只返回一个布尔值。在此处添加代码可能与预期输出重复,为什么会这样?我不明白如何按关键示例(Peter)对这个多维数组进行排序。@初学者查看答案中的演示。为什么Peter在第一个索引上它应该是peck因为大写

P

小于小写

P

可以不分大小写对它进行排序吗?我只想按字母顺序显示order@Beginner是的,检查演示。

Array
(
    [0] => Array
        (
            [peck] => 4
        )
    [1] => Array
        (
            [Peter] => 4
        )
    [2] => Array
        (
            [picked] => 4
        )
    [3] => Array
        (
            [pickled] => 4
        )
    [4] => Array
        (
            [Piper] => 4
        )
)

(编辑:无锡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!