Чтобы избежать предупреждений, второй массив должен быть объявлен как
$newArray = array();
Это может быть включено в ваш код следующим образом
$newArray = array();
foreach ($myarray as $value){
if (strpos($value,'mysearchstring') !== false ){
$newArray[] = $value;
}
}
Ваш оригинальный код содержал ошибку.
strpos возвращает и false
, если не содержит иглу, в противном случае возвращает индекс вхождения. Так что strpos($value,'mysearchstring')
вернет 0, если $value
начинается с 'mysearchstring'
. Поскольку PHP преобразует 0
в false
и наоборот, он не будет добавлен в массив, если мы используем стандартные сравнения, поэтому нам нужно явно проверить, что он ложен без преобразования типов (преобразование 0
в false
например). Для этого мы используем! == (Обратите внимание на два =
) s. Это представлено в коде выше.
Дополнительную информацию об операторах сравнения в php см. В документации .
.
EDIT
Что касается комментария и использования []
, он рекламирует новый элемент в конце массива
Документация гласит:
если ключ не указан [в квадратных скобках], берется максимум существующих целочисленных индексов, и новым ключом будет это максимальное значение плюс 1. Если целых индексов еще не существует, ключ будет равен 0 ( нуль).
Так что, если у нас есть массив
$arr = array(5 => 1, 12 => 2);
//doing this
$arr[] = 56;
//is exactly the same as doing
$arr[13] = 56
//As the maximum integer key is 12, so the new key is 13