2011-02-01 10 views
0

配列$ myarrayがあります。私はここで、配列の内容をページ分割したいは私がやってを考えていますものです:配列をページ分割する

//Find total number of rows 
     $all_rs = $newArrayOfRows; 
     $this->total_rows = count($all_rs); 


     //Max number of pages 
     $this->max_pages = ceil($this->total_rows/$this->rows_per_page); 
     if ($this->links_per_page > $this->max_pages) { 
      $this->links_per_page = $this->max_pages; 
     } 


     //Check the page value just in case someone is trying to input an aribitrary value 
     if ($this->page > $this->max_pages || $this->page <= 0) { 
      $this->page = 1; 
     } 


     //Calculate Offset 
     $this->offset = $this->rows_per_page * ($this->page - 1); 


     //Fetch the required result set 
私は私の最初の配列から、私はすべてのページのために必要なだけの情報を取得するために、すべてこの情報に参加するにはどうすればよい

Ty非常に

答えて

0
$array = array_slice($all_rs, $this->offset, $this->rows_per_page); 

従って$arrayは、所望のサブセットを含む。

0

アレイスライスはこれを行う必要があります。

array array_slice(array, offset[, length]); 
array: Base array to be used 
int offset: Starting element index 
int length (optional): 

しかし、そのようなデータをコピーしてもよろしいですか?

あなただけのページが、この

$アイテム= C->のgetItemを($ PAGENUMBER、$ itemNumber)が好きなあなたに項目1を与えるアクセサをお勧めします。

+0

私は初心者だ、それはuがideeaを持って、それを投稿し、記入した場合ので、私は、何のわからないんだけど...あなたの助けはどこかに行くと、暗闇の中でフィッシングのようなものです:)私はそれがうまくいくかどうかを私に聞かせてくれます。 – webmasters

2

あなたの変数$all_rsから、配列がデータベース結果セットであると推測しています。

この場合、データベースからそのページに表示する行のみをフェッチする必要があります。

テーブル内のすべての行をフェッチしないで、一部しか表示しないでください。サイトに実際のトラフィックがあると、サーバーを処理するにはあまりにも多くなりすぎ、サイト全体が機能しなくなります。あなたが必要以上のデータを求めて...

  1. 廃棄物のメモリ
  2. あなたがPHP
  3. にデータベースサーバからそれらを転送
  4. 廃棄物の時間/帯域幅を使用することは決してないだろうすべての結果を保持している廃棄物のCPU時間を見つけますあなたが使用しない行
  5. ハードドライブから使用しないであろうディスクのIO読み取り行を無駄にする
  6. 多くの小さな結果セットではなく、大きな結果セットを使ってクエリキャッシュをいっぱいにすることで、 。

が必要な行のみを取得するには、あなたが取得する行数を指定し、オフセット(多くの行をスキップする方法)することができますあなたのSQLクエリでLIMIT句を使用します。ロジックは、配列をスライスする方法を理解するために、ここまで来ているのと本質的に同じです。代わりに、それを使用して、データベースクエリのLIMIT部分に含める数字を特定します。

0

$newArrayOfRowsは私のものです。 ;)

//Find total number of rows 
$all_rs = $newArrayOfRows; 
$this->total_rows = count($all_rs); 


//Max number of pages 
$this->max_pages = ceil($this->total_rows/$this->rows_per_page); 
if ($this->links_per_page > $this->max_pages) { 
    $this->links_per_page = $this->max_pages; 
} 


//Check the page value just in case someone is trying to input an aribitrary value 
if ($this->page > $this->max_pages || $this->page <= 0) { 
    $this->page = 1; 
} 


//Calculate Offset 
$this->offset = $this->rows_per_page * ($this->page - 1); 


//Fetch the required result set 

for($n = $this->offset;$n < $this->rows_per_page;$n++){ 
    $thisPageArray[] = $newArrayOfRows[$n]; 
} 

//NOW $thisPageArray HAS THE ROWS OF THIS PAGE.