2016-09-26 4 views
0

私はキーと値がある配列を持っています。NEW変数に配列キーを抽出する

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 

私はimage1.jpgので、新しい変数に$最新の配列から各キーを抽出したい:

$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); 

これは私に次の配列を与える:私は、画像フォルダを巡回することにより、それを生成します$ var1になると、IMG_02.JPGは$ var2になります。

私には2つの問題があります。最初に、ファイル名には "images/myimages /"パス名が必要です(ファイルがそのフォルダ内に存在するかどうかを確認する必要があります)。次に、5つの新しい変数に5つのキーを抽出する方法がわかりません。私が見ているすべての例は、ここにあるような同じ名前の変数にキーを抽出しますhttp://php.net/manual/en/function.extract.php

どうすればいいですか?

ありがとうございます。

+3

なぜvarsに抽出するのですか? '$ newest = array_keys($ newest);'と 'echo $ newest [0];を使ってください。 'など...またはそれを介してループします。 'basename()'も参照してください。 – AbraCadaver

+3

あなたは '$ var1'、' $ var2'などの変数を望むことはほとんどありません。そうしているときは、配列を使うだけです。 – Barmar

+1

前のコメントで述べたように、 '$ varX'よりも配列を使う方が良いですが、参考までにhttp://php.net/manual/fr/function.list.phpをご覧ください。 – olibiaz

答えて

2

本当に私はあなたがそれを必要とする理由を理解できません。 しかし、あなたはこのような何か行うことができます:

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

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

をあなただけの配列を使用したほうが良いでしょう:

$newest = array_keys($newest); 

は、その後0-4アクセス:

echo $newest[0]; 

だけで取得するにはファイル名:

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

元の配列を作成するときは、basename()を使用することができます。

関連する問題