2014-12-03 104 views
4

我有一個對象數組,每個對象都有一個唯一的隨機ID。如何在使用array_chunk時保留原始唯一數組鍵?

111 => 
    object(stdClass)[452] 
     public 'Description' => string 'Description here...' (length=728)  
     public 'Name' => string 'Shirt' (length=18) 
     public 'Price' => float 36.56 

222 => 
    object(stdClass)[452] 
     public 'Description' => string 'Description here...' (length=728)  
     public 'Name' => string 'Pants' (length=18) 
     public 'Price' => float 36.56 

333 => 
    object(stdClass)[452] 
     public 'Description' => string 'Description here...' (length=728)  
     public 'Name' => string 'Dress' (length=18) 
     public 'Price' => float 36.56 

444 => 
    object(stdClass)[452] 
     public 'Description' => string 'Description here...' (length=728)  
     public 'Name' => string 'Dress' (length=18) 
     public 'Price' => float 36.56 

... 

我的目標是將我的鍵控對象數組分成2個塊用於分頁目的。因此,像這樣會做:

0 => 
    111 => 
     object(stdClass)[452] 
      public 'Description' => string 'Description here...' (length=728)   
      public 'Name' => string 'Shirt' (length=18) 
      public 'Price' => float 36.56 

    222 => 
     object(stdClass)[452] 
      public 'Description' => string 'Description here...' (length=728)   
      public 'Name' => string 'Pants' (length=18) 
      public 'Price' => float 36.56 
1 => 
    333 => 
     object(stdClass)[452] 
      public 'Description' => string 'Description here...' (length=728)   
      public 'Name' => string 'Dress' (length=18) 
      public 'Price' => float 36.56 

    444 => 
     object(stdClass)[452] 
      public 'Description' => string 'Description here...' (length=728)   
      public 'Name' => string 'Dress' (length=18) 
      public 'Price' => float 36.56 
... 

我的問題是使用array_chunk()我對象的數組分成2組,我的唯一的ID沒有被保留。

private function paginate($array) 
{ 
    $chunks = 2; 
    $paginatedResults = array_chunk($array, $chunks); 

    return $paginatedResults; 
} 

功能輸出:

0 => 
    0 => 
     object(stdClass)[452] 
      public 'Description' => string 'Description here...' (length=728) 
      public 'Name' => string 'Shirt' (length=18) 
      public 'Price' => float 36.56 

    1 => 
     object(stdClass)[452] 
      public 'Description' => string 'Description here...' (length=728) 
      public 'Name' => string 'Pants' (length=18) 
      public 'Price' => float 36.56 
1 => 
    0 => 
     object(stdClass)[452] 
      public 'Description' => string 'Description here...' (length=728) 
      public 'Name' => string 'Dress' (length=18) 
      public 'Price' => float 36.56 

    1 => 
     object(stdClass)[452] 
      public 'Description' => string 'Description here...' (length=728) 
      public 'Name' => string 'Dress' (length=18) 
      public 'Price' => float 36.56 
... 

如何可以分裂我的對象的帶鍵陣列成每索引2點的對象,同時保持包含唯一ID我原先的數組鍵另一個數組?

回答

14

我所要做的就是的array_chunk()第三個參數設置爲true,像這樣:

$paginatedResults = array_chunk($array, $chunk, true); 
5

好像正是這樣的array array_chunk (array $input , int $size [, bool $preserve_keys = false ])控制的第三個參數。

<?php 
$x = array_flip(range('a','j')); 
var_dump($x); 
var_dump(array_chunk($x, 3, true)); 

打印

array(10) { 
    ["a"]=> 
    int(0) 
    ["b"]=> 
    int(1) 
    ["c"]=> 
    int(2) 
    ["d"]=> 
    int(3) 
    ["e"]=> 
    int(4) 
    ["f"]=> 
    int(5) 
    ["g"]=> 
    int(6) 
    ["h"]=> 
    int(7) 
    ["i"]=> 
    int(8) 
    ["j"]=> 
    int(9) 
} 
array(4) { 
    [0]=> 
    array(3) { 
    ["a"]=> 
    int(0) 
    ["b"]=> 
    int(1) 
    ["c"]=> 
    int(2) 
    } 
    [1]=> 
    array(3) { 
    ["d"]=> 
    int(3) 
    ["e"]=> 
    int(4) 
    ["f"]=> 
    int(5) 
    } 
    [2]=> 
    array(3) { 
    ["g"]=> 
    int(6) 
    ["h"]=> 
    int(7) 
    ["i"]=> 
    int(8) 
    } 
    [3]=> 
    array(1) { 
    ["j"]=> 
    int(9) 
    } 
} 
相關問題