2013-10-25 5 views
0

Я работаю с библиотекой S3 здесь: http://undesigned.org.za/2007/10/22/amazon-s3-php-class/Извлечение данных из многомерного массива

Он отлично работает, но у меня трудное время извлечения данных мне нужно из возвращаемых результатов массива. Я хватаю содержимое ведра, и он возвращает что-то вроде этого:

Array (
    [sample_mpeg4.mp4] => Array (
     [name] => sample_mpeg4.mp4 
     [time] => 1378922417 
     [size] => 245779 
     [hash] => dc77a8de8c091c19d86df74eb7 
    ) 
    [steve.jpg] => Array (
     [name] => steve.jpg 
     [time] => 1381270899 
     [size] => 61109 
     [hash] => a008368bf58515775c45e75c54 
    ) 
    [stev-small-photo1.png] => Array (
     [name] => stev-small-photo1.png 
     [time] => 1381270891 
     [size] => 680353 
     [hash] => ddcb22a103d4fa8360083ad70a 
    ) 
) 

Хорошо, круто. Я запрашиваю и сопоставляю ключ, чтобы вытащить конкретную информацию на этом конкретном носителе. Мой код для этого выглядит так:

 $searchVar = "steve.jpg"; 

     $s3 = new S3(awsAccessKey, awsSecretKey); 
     $bucket_contents = $s3->getBucket("uploads.bucket.com"); 

    //fetch array of current files 
     $searchAssetsBucket = array_keys($bucket_contents); 

     foreach ($searchAssetsBucket as $value) { 
      if($value == $searchVar) { 
       echo $value['time']; 
      } 
     } 

     if(empty($returnValue)) { 
      $returnValue = "Sorry no results for <b>$searchVar</b>."; 
     } 

Это не работает для меня. То, что я действительно пытаюсь сделать, - получить код, чтобы вернуть имя/время/размер/хэш-вары из массива [steve.jpg] после его соответствия. Я не уверен, что я делаю неправильно здесь, но этот код просто возвращает «s».

У кого-нибудь есть идеи? Я действительно находятся на потерять здесь ...

ответ

1

Я хотел бы сделать что-то вроде этого:

$myArray=$yourOriginalS3Array; 
$searchVar='Steve.jpg'; 

// set up default/blank data in $matchedArr 
foreach ($myArray as $key => $val) 
{ 
    if($key == $searchVar) { 
    $matchedArr=$val; 
    } 
} 

echo "The name is ".$matchedArr['name']." and the size is ".$matchedArr['size']."<br>"; 

Таким образом, вы проверяете ключи от исходного массива, и в случае соответствия, возвращая массив, соответствует второму уровню исходного массива, к которому можно легко получить доступ в коде.

Смежные вопросы