У меня такой массив, я сделаю его очень простым для понимания
$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');
Может ли какой-нибудь субстрат, но с чего начать?
Вы можете использовать array_filter()
для фильтрации массива, возвращая только элементы, которые соответствуют данному условию:
$picturethumbs = array_filter($picture, function($v) { return stristr($v, '_thumb'); });
_thumb
все элементы массива, содержащие строку _thumb
. Это может быть полезно, если вы не знаете расширения файла, или если _thumb
появляется где-то, кроме конца строки (например, my_thumb.gif
все равно будет соответствовать)
$picturethumbs = array_filter($picture, function($v) { return substr($v, -10) === '_thumb.jpg'; });
_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)
Вот ты где:
$picturethumbs = array(); foreach ($picture as $val) { if (substr($val, -10) == '_thumb.jpg') { $picturethumbs[] = $val; } }