4

私はこの種の配列を持っています。理解するのを非常に簡単にします

$picture = ( 'artist2-1_thumb.jpg',
             'artist2-2.jpg' ,
             'artist2-3_thumb.jpg',
             'artist2-4.jpg',
             'artist2-5_thumb.jpg');

今、私は substr を使用して、親指だけを持つ新しい配列を取得し、このような新しい配列を取得したい

$picturethumbs = ( 'artist2-1_thumb.jpg',
                   'artist2-3_thumb.jpg',
                   'artist2-5_thumb.jpg');

一部の substr を使用できますが、どこから始めればよいですか?

4

2 に答える 2

8

array_filter()指定された条件に一致するアイテムのみを返し、配列をフィルタリングするために使用できます。

$picturethumbs = array_filter($picture, function($v) {
  return strpos($v, '_thumb') !== false; 
});

string を含むすべての配列項目を返します_thumb。これは、ファイルの拡張子がわからない場合や_thumb、文字列の末尾以外の場所にある場合に役立ちます (例:my_thumb.gifそれでも一致します) 。

$picturethumbs = array_filter($picture, function($v) {
  return substr($v, -10) === '_thumb.jpg'; 
});

最後の 10 文字が一致するすべての配列項目を返します_thumb.jpg

両方(例の配列が与えられた場合)の出力:

array
  0 => string 'artist2-1_thumb.jpg' (length=19)
  2 => string 'artist2-3_thumb.jpg' (length=19)
  4 => string 'artist2-5_thumb.jpg' (length=19)

ここにデモがあります

于 2013-10-29T09:33:44.680 に答える
1

はい、どうぞ:

$picturethumbs = array();

foreach ($picture as $val) {
  if (substr($val, -10) == '_thumb.jpg') {
    $picturethumbs[] = $val;
  }
}
于 2013-10-29T09:33:49.803 に答える