[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужна помощь с рег.выражением
remenikomer
Есть данные:
$a = '2|7|5' ;
$b = 1,5,3,62 ;
Нужно определить, встречается ли в переменной b что-то из трех значений из переменной a.
Способ разделения данных не имеет значения. Можно переделать их в массив.

А цель такая:
есть в БД запись, у нее есть поле несколько значений id ($b). Есть в конфиге настройки ($a), что создает условие, если у записи есть какое-то значение из указанных id, то эту запись нужно вывести.

Может быть есть другие способы реализации (кроме foreach в foreach)?
BaNru
Если правильно понял, то
http://ideone.com/un0EnD
В примере только первая берется без цикла. Но ведь может быть несколько совпадений, тогда без цикла ни как.
TMake
разбирай строку через explode http://www.php.net/manual/ru/function.explode.php
проверяй расхождение массивов http://us1.php.net/manual/ru/function.array-diff.php
remenikomer
Цитата (BaNru @ 8.04.2014 - 18:25)
Если правильно понял, то
http://ideone.com/un0EnD
В примере только первая берется без цикла. Но ведь может быть несколько совпадений, тогда без цикла ни как.

а мне хотя бы одно попадание и нужно. Спасибо.
BaNru
"Хотя бы одно" не корректор для данного примера. Ибо там берется всегда первое совпадение.

Для "хотя бы одно" тогда вот так лучше
http://ideone.com/wAKl8u

Добавлено позже:
Кстати, можно и проще с array_rand()
Но это будет домашним заданием biggrin.gif
jon378
$a = '2|7|5' ;
$b = [1,5,3,62];

$a = explode('|', $a);
$flag = false;
foreach ($a as $k => $v) {
if (in_array($v, $b)) {
$flag = true;
}
}
remenikomer
я уже понял.
Тогда уж вопрос такой: в чем разница всех этих примеров? Самый короткий способ:
if( array_intersect( $arr1 , $arr2 ) ) {}
чем он плох?
Мне и нужно то любое, хоть 1-е, хоть 1000-е совпадение. Главное, чтобы получить true, что есть хотя бы одно совпадение.
BaNru
Цитата
Главное, чтобы получить true

Вот так всегда. Многие подробности выясняются после.

В начале у тебя задача звучала так
Цитата
если у записи есть какое-то значение из указанных id, то эту запись нужно вывести.

Я понял, что надо вывести совпавшую id запись, а не TRUE. Это большая разница.

У каждой задачи может быть множество решений.
Какие-то короче написаны, какие-то быстрее исполняются.
Многое зависит от ТЗ, в котором запятая может изменить многое.

Пользуйся тем, что тебе более удобно и понятно.
Тебе работать с этим кодом.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.