Лучше разделить их или просто создать другую функцию. Но вы можете поставить оператор 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
}
Если вам нужен код для хранения, переименования и перемещения изображения, не стесняйтесь запрашивать.
bool in_array ( mixed $needle , array $haystack [, bool $strict ] )
Если Вам просто будет нужно точное совпадение, используйте 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;
}
}
preg_match ожидает строковый вход не массив. При использовании метода, Вы описали Вас, получит:
Предупреждение: preg_match () ожидает, что параметр 2 будет строкой, массив, данный в МЕСТЕ на строке X
Вы хотите in_array:
if ( in_array ( $str , $array ) ) {
echo 'It exists';
} else {
echo 'Does not exist';
}
Если у Вас есть больше чем одно значение, Вы могли бы или протестировать каждое значение 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
}
Почему бы не использовать встроенную функцию in_array? (http://www.php.net/in_array)
preg_match будет только работать при поиске подстроки в другой строке. (источник)