Как найти строку в массиве в PHP?

Лучше разделить их или просто создать другую функцию. Но вы можете поставить оператор if, если изображение находится в запросе или нет.

Например:

    if(! isset($data['image'])){ //if the image is not in the request

          //Your code          

    }
    else{ //if the image is in the request

         //Your code

    }

Если вам нужен код для хранения, переименования и перемещения изображения, не стесняйтесь запрашивать.

9
задан Don't Panic 5 October 2017 в 14:55
поделиться

5 ответов

 bool in_array  ( mixed $needle  , array $haystack  [, bool $strict  ] )

http://php.net/manual/en/function.in-array.php

34
ответ дан 4 December 2019 в 06:03
поделиться

Если Вам просто будет нужно точное совпадение, используйте in_array ($str, $array) то - это будет быстрее.

Другой подход должен был бы использовать ассоциативный массив с Вашими строками как ключ, который должен быть логарифмически быстрее. Сомнение Вы будете видеть огромную разницу между этим и линейным поисковым подходом со всего 80 элементами все же.

Если Вам действительно будет нужно соответствие шаблона, то необходимо будет циклично выполниться по элементам массива для использования preg_match.


Вы отредактировали вопрос спросить "что, если Вы хотите проверить на несколько строк?" - необходимо будет циклично выполниться по тем строкам, но можно остановиться, как только Вы не получаете соответствие...

$find=array("foo", "bar");
$found=count($find)>0; //ensure found is initialised as false when no terms
foreach($find as $term)
{
   if(!in_array($term, $array))
   {
        $found=false;
        break;
   }
}
6
ответ дан 4 December 2019 в 06:03
поделиться

preg_match ожидает строковый вход не массив. При использовании метода, Вы описали Вас, получит:

Предупреждение: preg_match () ожидает, что параметр 2 будет строкой, массив, данный в МЕСТЕ на строке X

Вы хотите in_array:

if ( in_array ( $str , $array ) ) {
    echo 'It exists';
} else {
    echo 'Does not exist';
}
4
ответ дан 4 December 2019 в 06:03
поделиться

Если у Вас есть больше чем одно значение, Вы могли бы или протестировать каждое значение separatly:

if (in_array($str1, $array) && in_array($str2, $array) && in_array($str3, $array) /* … */) {
    // every string is element of the array
    // replace AND operator (`&&`) by OR operator (`||`) to check
    // if at least one of the strings is element of the array
}

Или Вы могли сделать пересечение и строк и массива:

$strings = array($str1, $str2, $str3, /* … */);
if (count(array_intersect($strings, $array)) == count($strings)) {
    // every string is element of the array
    // remove "== count($strings)" to check if at least one of the strings is element
    // of the array
}
2
ответ дан 4 December 2019 в 06:03
поделиться

Почему бы не использовать встроенную функцию in_array? (http://www.php.net/in_array)

preg_match будет только работать при поиске подстроки в другой строке. (источник)

3
ответ дан 4 December 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: