2016-05-12 37 views
1

我有一個大的多維數組,這是我從數據庫得到了與圖像位置PHP分裂multidimensionl陣列到陣列的塊,其中相匹配的值

Array 
(
    [0] => Array 
     (
      [name] => 01.jpg 
      [album] => /images/beach 
     ) 

    [1] => Array 
     (
      [name] => 02.jpg 
      [album] => /images/beach 
     ) 
    [2] => Array 
     (
      [name] => 03.jpg 
      [album] => /images/home 
     ) 
) 

我試圖把它拆分成符合專輯較小陣列,如下:

Array 
(
    [0] => Array 
     (
      [name] => 01.jpg 
      [album] => /images/beach 
     ) 

    [1] => Array 
     (
      [name] => 02.jpg 
      [album] => /images/beach 
     ) 
) 
Array 
(
    [0] => Array 
     (
      [name] => 03.jpg 
      [album] => /images/home 
     ) 
) 

什麼是一個很好的方式去呢?我正在考慮將第一個值轉換成新的陣列,直到我達到結尾,但必須有一個更有效的方法。

+0

而從數據庫中獲取的行您可能構建期望結構:'而($行= $ conn-> FETCH_ASSOC()){$結果[$行[ '專輯' ]] = $ row; }' –

+0

這兩個數組是一樣的嗎?你能改說你的問題嗎? – Poiz

+0

你也可以添加一個你正在檢索數據的查詢嗎?在從數據庫中獲取數據時,按專輯排序它可能會更容易。還有代碼如何構建數據。 – Richard

回答

0

您可以創建如果需要使用array_values使用album作爲密鑰生成新的數組,你需要組,並隨後更新的密鑰。

<?php 
$arrays = array 
(
    '0' => array 
     (
      'name' => '01.jpg', 
      'album' => '/images/beach' 
     ), 

    '1' => array 
     (
      'name' => '02.jpg', 
      'album' => '/images/beach' 
     ), 
    '2' => array 
     (
      'name' => '03.jpg', 
      'album' => '/images/home' 
     ) 
); 
$results = array(); 
foreach($arrays as $array){ 
    $results[$array['album']][] = $array; 
} 
$results = array_values($results); 
print_r($results); 

演示:https://eval.in/569788

+0

謝謝,這完成了這項工作。 – TMpic

0

我會這樣做。

$albums = array(); 
foreach ($dbrows as $dbrow) { 
    $albums[$dbrow['album']][] = $dbrow; 
} 
unset($dbrows); 
var_dump($albums); 
+0

這個塊是不必要的:'if(empty($ albums [ $ dbrow ['album']]))' –

+0

的確,謝謝。 –