Удалить элементы из массива, соответствующие определенному значению в переполнении стека

у меня есть следующий массив

[0] => 1009
[1] => 1033
[2] => 2052
[3] => ANNEX 4E
[4] => Bill of Lading
[5] => CERTIFICATE OF ANALYSIS
[6] => CERTIFICATE OF ORIGIN
[7] => DHL - 5130431633

Я хочу удалить значение с DHL, за которым следует любое число. Любое значение, содержащее DHL, я хочу удалить.

например DHL — 5130431633 или DHL — 51304345654 должен быть удален номер перед DHL не имеет значения

я использовал следующий код, но он не работает

$xmlarrayresultdocsave = preg_grep("/^DHL$/i", $xmlarrayresultdocsave,
PREG_GREP_INVERT);

0

Решение

Ваше регулярное выражение ищет DHL исключительно на линии, а не на всю строку. Вы хотите сделать:

/^DHL.*$/i

Какие совпадения DHL и все остальное до конца строки.

1

Другие решения

Следующий код будет делать именно то, что вы хотите.

$haystack = array(
'Horse',
'DHL',
'DHL - 123',
'Pedestrian',
'Philosopher',
'DHL-123',
'DHL - 123'
);

$needle = 'DHL - ';

// Find all values with DHL
$test = array_filter($haystack, function($el) use ($needle) {
return (strpos($el, $needle) !== false);
});

// Unset the values
foreach (array_keys($foundRows) as $key) {
unset($haystack[$key]);
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector