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

php按键排序多维数组

发布时间:2022-11-18 10:58:48 所属栏目:PHP教程 来源:
导读:  php按键排序多维数组

  phpsorting

  php按键排序多维数组,php,sorting,Php,Sorting,假设我有一系列的array(8) { [0] => array(1) {'Peter' =>int(4) } [1] => array(1) {'Piper' =
  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
 
          )
      [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
          )
  )
 

(编辑:我爱资讯网)

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