Laravel嵌套数组按第一个值排序

问题描述 投票:0回答:1

在开发Laravel应用程序时,我坚持使用数组排序的一个问题。开始时,我使用分区问题按时间将我的数组拆分成相等的块,但现在我有一个问题是按数组的id排序。

我的阵列:

array(2) {
  [0]=>
  array(3) {
    [0]=>
    array(8) {
      [0]=>
      int(4)  <----- this is value i need to sort by
      [1]=>
      int(15)
      [2]=>
      string(64) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
    [1]=>
    array(8) {
      [0]=>
      int(6)
      [1]=>
      int(10)
      [2]=>
      string(64) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
    [2]=>
    array(8) {
      [0]=>
      int(2)
      [1]=>
      int(8)
      [2]=>
      string(85) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
  }
  [1]=>
  array(3) {
    [0]=>
    array(8) {
      [0]=>
      int(3)
      [1]=>
      int(14)
      [2]=>
      string(158) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
    [1]=>
    array(8) {
      [0]=>
      int(5)
      [1]=>
      int(12)
      [2]=>
      string(158) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
    [2]=>
    array(8) {
      [0]=>
      int(1)
      [1]=>
      int(7)
      [2]=>
      string(55) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
  }
}

我需要按每个数组的第一个值排序,所以称为我的id。

我需要的输出:

array(2) {
  [0]=>
  array(3) {
    [0]=>
    array(8) {
      [0]=>
      int(1)
      [1]=>
      int(15)
      [2]=>
      string(64) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
    [1]=>
    array(8) {
      [0]=>
      int(2)
      [1]=>
      int(10)
      [2]=>
      string(64) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
    [2]=>
    array(8) {
      [0]=>
      int(3)
      [1]=>
      int(8)
      [2]=>
      string(85) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
  }
  [1]=>
  array(3) {
    [0]=>
    array(8) {
      [0]=>
      int(4)
      [1]=>
      int(14)
      [2]=>
      string(158) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
    [1]=>
    array(8) {
      [0]=>
      int(5)
      [1]=>
      int(12)
      [2]=>
      string(158) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
    [2]=>
    array(8) {
      [0]=>
      int(6)
      [1]=>
      int(7)
      [2]=>
      string(55) "text..."
      [3]=>
      string(6) "650008"
      [4]=>
      string(13) "NP08KDT"
      [5]=>
      int(48)
      [6]=>
      string(6) "456467"
      [7]=>
      int(33)
    }
  }
}

也许你们中的任何人有任何解决方案我怎么能解决这个问题,到目前为止我尝试了很多排序功能,它们似乎都不适合我。

谢谢!

php arrays laravel sorting
1个回答
0
投票

这可能不是最好的方法,但你可以尝试这样的事情。

$tempArray = array();
$sortedArray = array();

foreach ($yourArray as $key1 => $arr){// create 2D array

    foreach ($arr as $key2 => $arr2){
        $tempArray[] = $arr2;        
    }

}

foreach ($tempArray as $keyTemp => $tempElem){

    $sortingArray[] = $tempElem[0];//get array value you need to sort

}    
asort($sortingArray);// sort array maintaining the key

foreach ($sortingArray as $keySort => $sortElem){//loop through sorted array to push elements to a new array
    $sortedArray[] = $tempArray[$keySort];
}

print_r($sortedArray);
© www.soinside.com 2019 - 2024. All rights reserved.