2012-04-03 62 views
1

我有這些數組,[270] [269] [268]是相冊ID和[94] [86] [96] [101] ...是照片ID。如何找出最大意味着每張專輯中的最新照片。 我的目的是循環所有的照片,找出最大的照片和風格它比每個相冊中的其他人更大。順便說一句,我把這兩個專輯和照片的價值作爲這個陣列的關鍵。這是好還是壞? 謝謝進階如何找出最大/最新的多維陣列

so the result is: 
Album 1 = $arr[270][97] 
Album 2 = $arr[269][102] 
Album 3 = $arr[268][86] 

Array 
(
[270] => Array 
    (
     [user_email] => [email protected] 
     [story_name] => Story C 
     [89] => Array 
      (
       [pid] => 89 
       [photo_url] => story_photos/2012/0322/361332393792911587.jpg 
      ) 

     [90] => Array 
      (
       [pid] => 90 
       [photo_url] => story_photos/2012/0322/361332393792911587.jpg 
      ) 

     [97] => Array 
      (
       [pid] => 92 
       [photo_url] => story_photos/2012/0402/361333367180912960.jpg 
      ) 
    ) 
[269] => Array 
    (
     [user_email] => [email protected] 
     [story_name] => Story B 
     [87] => Array 
      (
       [pid] => 87 
       [photo_url] => story_photos/2012/0322/361332381406580761.jpg 
      ) 

     [98] => Array 
      (
       [pid] => 98 
       [photo_url] => story_photos/2012/0402/361333369100507620.jpg 
      ) 

     [102] => Array 
      (
       [pid] => 99 
       [photo_url] => story_photos/2012/0402/361333369110530609.jpg 
      ) 
[268] => Array 
    (
     [user_email] => [email protected] 
     [story_name] => Story A 
     [86] => Array 
      (
       [pid] => 86 
       [photo_url] => story_photos/2012/0322/361332381393552719.jpg 
      ) 

    ) 

) 
+2

你是如何定義的 「最大」 的照片?是他們的任何財產,我們可以使用,如最大的PID? – 2012-04-03 16:15:34

+0

這就是我感到奇怪的是沒有財產可以使用,所以我問這個數組結構好還是差。而且[pid]也是關鍵 – vzhen 2012-04-03 16:28:32

+0

最大的關鍵是最新的照片嗎?因爲在我的世界裏它不能保證。 – 2012-04-03 16:34:59

回答

0

我會建議你使用類似下面的數組結構:

Array (
[270] => Array (
     [user_email] => [email protected] 
     [story_name] => Story C 
     [photos] => Array(
      [89] => Array 
       (
        [pid] => 89 
        [photo_url] => story_photos/2012/0322/361332393792911587.jpg 
       ) 

      [90] => Array 
       (
        [pid] => 90 
        [photo_url] => story_photos/2012/0322/361332393792911587.jpg 
       ) 
     ) 
. 
. 
. 
[269] => Array (... 
) 

,並通過使用krsort()獲得最新的照片。像這樣:

foreach($array as $album) { 
    krsort($album['photos']); 
    for($i=0; $i<count($album['photos']); $i++) { 
     if ($i == 0) { 
      // LATEST 
     } 
    } 
} 
+0

我如何在它之前創建另一個數組?就像你提到的['照片']。 – vzhen 2012-04-03 16:29:49

+0

我想通了。 ^^ – vzhen 2012-04-05 01:51:42

0

可以使用對php.net提供的功能之一(http://php.net/manual/pt_BR/function.min.php

function min_by_key($arr, $key) 
    { 
     $min = array(); 
     foreach ($arr as $val) { 
      if (!isset($val[$key]) and is_array($val)) 
      { 
       $min2 = min_by_key($val, $key); 
       $min[$min2] = 1; 
      } 
      elseif (!isset($val[$key]) and !is_array($val)) 
      { 
       return false; 
      } 
      elseif (isset($val[$key])) 
      { 
       $min[$val[$key]] = 1; 
      } 
     } 
     return min(array_keys($min)); 
    } 

function max_by_key($arr, $key) 
    { 
     $max = array(); 
     foreach ($arr as $val) { 
      if (!isset($val[$key]) and is_array($val)) 
      { 
       $max2 = max_by_key($val, $key); 
       $max[$max2] = 1; 
      } 
      elseif (!isset($val[$key]) and !is_array($val)) 
      { 
       return false; 
      } 
      elseif (isset($val[$key])) 
      { 
       $max[$val[$key]] = 1; 
      } 
     } 
     return max(array_keys($max)); 
    }