从多维数组中提取数据

时间:2013-10-25 03:31:37

标签: php arrays multidimensional-array amazon-s3

我正在使用此处的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 个答案:

答案 0 :(得分: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>";

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