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

将返回包含字符串的所有数组项_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 回答