2013-10-25 51 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>"; 

这样,你正在检查你的原始数组的键,如果匹配,返回一个数组匹配原始数组的第二级,可以在代码中轻松访问。