2017-09-20 144 views
0

任何人都可以幫助如何排序集合中的鍵嗎?排序集合數組

我嘗試使用sort()函數,但它沒有工作。

當前實現: 公共職能myFunction的($ PARAM) {$ = collectionOne收集();

foreach ($param as $keyOne=> $valueOne) { 
     $collectionTwo = collect(); 

     foreach ($valueOne as $id) { 

      $result= $this->model()::find($id); 

      if (!isset($result) || empty($result)) throw new NoRecordFoundException('Not Found'); 

      $resultId = $result->some_id; 

      if ($collectionTwo->has($resultId)) { 
       $collectionTwo[$resultId]->push($id); 
      } else { 
       $collectionThree= collect($id); 
       $collectionTwo->put($resultId, $collectionThree); 
      } 
     } 

     $collectionOne->put($keyOne, $collectionTwo->sort()); 
     var_dump($collectionTwo->toArray()); 
    } 
    return $collectionOne; 
} 

實際輸出:

MyRepository.php:124: 
array (size=2) 
    1 => 
    array (size=2) 
     0 => int 1 
     1 => int 4 
    2 => 
    array (size=1) 
     0 => int 2 
MyRepository.php:124: 
array (size=2) 
    2 =>  <--- Not sorted 
    array (size=1) 
     0 => int 2 
    1 =>  <--- Not sorted 
    array (size=1) 
     0 => int 4 

預期輸出:

MyRepository.php:124: 
array (size=2) 
    1 => 
    array (size=2) 
     0 => int 1 
     1 => int 4 
    2 => 
    array (size=1) 
     0 => int 2 
MyRepository.php:124: 
array (size=2) 
    1 =>  <--- Sorted 
    array (size=1) 
     0 => int 4 
    2 =>  <--- Sorted 
    array (size=1) 
     0 => int 2 
+0

如果在集合上使用' - > values()',會有什麼幫助? –

+0

剛纔我嘗試了values(),但是它將鍵(2,1)更改爲數組索引(0,1)。 – Steven

+0

沒有排序發生 – Steven

回答

0

試試這個:

$thisCollection = $thisCollection->toArray(); 
$thisCollection = ksort($thisCollection); 
$thisCollection = collect($thisCollection); 

這個想法是將你的集合轉換爲數組,然後將它放入數組,然後將數組返回到collect()幫助器的集合。

+0

$ thisCollection = ksort($ thisCollection); <---返回的布爾值 – Steven

+0

「ksort($ thisCollection);」只有<---工作!謝謝 – Steven

+0

不客氣。我不知道你的$ thisCollection是一個數組還是一個集合 –