2010-06-29 4 views
0

Si, par exemple, j'avais tableau comme ceci:un moyen d'analyser tableau de données S3

array(34) { 
    ["ahostel.lt/img/background.png"]=> 
    array(4) { 
    ["name"]=> 
    string(29) "ahostel.lt/img/background.png" 
    ["time"]=> 
    int(1277819688) 
    ["size"]=> 
    int(36811) 
    ["hash"]=> 
    string(32) "2600e98e10aba543fb2637b701dec4f3" 
    } 
    ["ahostel.lt/img/body-navigation-bg.png"]=> 
    array(4) { 
    ["name"]=> 
    string(37) "ahostel.lt/img/body-navigation-bg.png" 
    ["time"]=> 
    int(1277819688) 
    ["size"]=> 
    int(409) 
    ["hash"]=> 
    string(32) "2e8743f24d46748c5919dfa44b51c2a5" 
    } 
    ["ahostel.lt/img/calendar-input.gif"]=> 
    array(4) { 
    ["name"]=> 
    string(33) "ahostel.lt/img/calendar-input.gif" 
    ["time"]=> 
    int(1277819688) 
    ["size"]=> 
    int(630) 
    ["hash"]=> 
    string(32) "45d5148e7937fc75a530d7ceb73b7bc8" 
    } 
    ["ahostel.lt/img/facebook-icon.png"]=> 
    array(4) { 
    ["name"]=> 
    string(32) "ahostel.lt/img/facebook-icon.png" 
    ["time"]=> 
    int(1277819688) 
    ["size"]=> 
    int(1090) 
    ["hash"]=> 
    string(32) "8a76e313b097f53d0f225a5db6f9ae6b" 
    } 
    ["ahostel.lt/img/favicon.png"]=> 
    array(4) { 
    ["name"]=> 
    string(26) "ahostel.lt/img/favicon.png" 
    ["time"]=> 
    int(1277819689) 
    ["size"]=> 
    int(505) 
    ["hash"]=> 
    string(32) "daa5091eb2c059fc36b54d521e589a50" 
    } 
[...] 

Quelle serait la meilleure sollution pour obtenir tous les répertoires et fichiers (dans des tableaux distincts, bien que) d'un chemin ahostel.lt/img/. J'ai maintenant plusieurs cycles foreach et cela ne semble pas aller vers une bonne solution.

+0

Pouvez-vous clarifier? Voulez-vous extraire les noms de fichiers ou voulez-vous diviser le chemin pour obtenir le répertoire ou voulez-vous récupérer les fichiers réels? –

+0

Je veux obtenir un tableau comme celui-ci, cependant, avec les informations sur les fichiers dans le chemin * ahostel.lt/img/* seulement. – Gajus

Répondre

0
$files   = array(); 
$directories = array(); 

foreach($this->file_system as $key => $file_object_info) 
{ 
    // make sure this is the requested path and exclude it from appearaning twice 
    if(strpos($key, $path) === 0 && $key !== $path) 
    { 
     $relative_path = mb_substr($key, mb_strlen($path)); 

     // this is a file 
     if(strpos($relative_path, '/') === FALSE) 
     { 
      $files[$key]  = $file_object_info; 
     } 
     // this is a directory 
     elseif(!substr($relative_path, strpos($relative_path, '/') + 1)) 
     { 
      $directories[$key] = $file_object_info; 
     } 
    } 
} 

Je pense que c'est le plus loin que je peux l'optimiser. Mais ce n'est pas aussi grave que je le pense.

Questions connexes