0

我正在使用此处找到的 S3 库:http: //undesign.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”。

有没有人有任何想法?我真的在这里输了...

4

1 回答 1

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>";

这样,您将检查原始数组的键,如果匹配,则返回与原始数组的第二级匹配的数组,该数组可以在您的代码中轻松访问。

于 2013-10-25T03:41:13.437 回答