2012-04-03 3 views
1

Ich habe diese Arrays, [270] [269] [268] sind Album-ID, und [94] [86] [96] [101] ... sind Foto ICH WÜRDE. Wie man das Maximum findet, bedeutet das neueste Foto in jedem Album. Mein Ziel ist es, alle Fotos zu loopen, das Maximumfoto zu finden und es größer als andere in jedem Album zu gestalten. Übrigens, ich habe Album und Foto als Schlüssel in diesem Array festgelegt. Ist das gut oder schlecht? Vielen Dank im advSo finden Sie die Max/neuesten multidimensionalen Arrays

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

Wie definieren Sie die "max" Foto? ist ihre Eigenschaft, die wir verwenden können, wie die größte Pid? –

+0

Das ist, was ich komisch finde, es gibt keine Eigenschaft kann verwenden, also frage ich, ist diese Array-Struktur gut oder schlecht. Und ja die [pid] ist auch der Schlüssel – vzhen

+0

Ist der größte Schlüssel immer das neueste Foto? Weil es in meiner Welt nicht garantiert ist. –

Antwort

0

Ich würde vorschlagen, dass Sie so etwas wie die folgende Array-Struktur verwenden:

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 (... 
) 

und das neueste Foto erhalten von krsort() verwenden. etwa so:

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

Wie erstelle ich ein anderes Array davor? wie, was du erwähnst ['Fotos']. – vzhen

+0

Ich habe es herausgefunden. ^^ – vzhen

0

Sie eine der Funktionen auf php.net vorgesehen in verwenden können (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)); 
    }