将数组键提取到NEW变量

时间:2016-09-26 19:26:54

标签: php arrays

我有一个数组,其中有一个键和一个值。我通过在图像文件夹中循环来生成它:

$images = array(); 
foreach (glob("images/myimages/*.{png,jpg,jpeg,JPG}", GLOB_BRACE) as $filename) {  
    $images[$filename] = filemtime($filename); 
}

arsort($images); 

$newest = array_slice($images, 0, 5);

这给了我以下数组:

images/myimages/image1.jpg => 1472497034
images/myimages/IMG_02.JPG => 2347389498
images/myimages/DSC_0066.png => 7837392948
images/myimages/fred_bloggs.jpg => 1472497034
images/myimages/IMG4532.JPG => 2347389498

我想从$ newest数组中提取每个键到一个新变量,因此image1.jpg变为$ var1,IMG_02.JPG变为$ var2等。

我有两个问题。首先,文件名需要从中剥离“images / myimages /”路径名(并检查该文件夹中是否存在文件)。其次,我看不出如何将5个密钥提取到这5个新变量中。我看到的所有示例都将密钥提取到同名的变量中,例如http://php.net/manual/en/function.extract.php

我怎样才能做到这一点?

提前致谢。

2 个答案:

答案 0 :(得分:2)

真的我不明白为什么你需要它。 但你可以这样做:

$prefix = 'var'; $count = 0;
foreach($newest as $key => $value) {
   $count++;
   ${$prefix.$count} = $key;
}

echo $var1; // 'images/myimages/image1.jpg'

答案 1 :(得分:0)

使用数组会更好:

$newest = array_keys($newest);

然后访问0-4:

echo $newest[0];

获取文件名:

$newest = array_map('basename', $newest);

或者您可以在创建原始阵列时使用basename()