Проверка на схождение массивов

Статус
В этой теме нельзя размещать новые ответы.

mit

Новичок
Проверка на схождение массивов

Здравствуйте уважаемые эксперты. Возник у меня небольшой вопрос по работе с массивами. Так вот.
Задан массив

Есть массив
PHP:
$array = array(
     "var1",
     "var2"
);
Нужно чтобы при пересечении массива $array и $_GET выдавало TRUE (т.е. если существует $_GET['var1"] либо $_GET["var2"] выдавало TRUE, а если не пересекаются то false).
Пробовал использовать array_intersect_key() ... не совсем подходит. Собственно вопрос ... как вычислить пересечение? Заранее спасибо за ответы.
 

mit

Новичок
Извиняюсь случайно нажал на публикацию.

Есть массив
Код:
$array = array(
     "var1",
     "var2"
);
Нужно чтобы при пересечении массива $array и $_GET выдавало TRUE (т.е. если существует $_GET['var1"] либо $_GET["var2"] выдавало TRUE, а если не пересекаются то false).
Пробовал использовать array_intersect_key() ... не совсем подходит. Собственно вопрос ... как вычислить пересечение? Заранее спасибо за ответы.
 

Sokil.Dmytro

Новичок
дык у тебя "var1", "var2" не колючи а значения, зачем тебе array_intersect_key. Юзай array_intersect и вычисляй размер - если больше нуля то хотябы одно совпадение есть

Пример 1. Пример использования array_intersect()

$array1 = array ("a" => "green", "red", "blue");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_intersect ($array1, $array2);

В результате выполнения переменная $result будет содержать Array
(
[a] => green
[0] => red
)
 

mit

Новичок
Строка запроса
Код:
/list.php?order=name&by=desc
Заданный массив
Код:
$arrFilterSession = array(
    	"manufacture",
        "order",
        "by"
);
При использовании функции array_intersect()
Код:
echo "<pre>";
print_r(array_intersect($arrFilterSession, $_GET));
echo "</pre>";
выдается пустой масcив. В чем может быть дело?
 

filipchuk

Новичок
выведи перед результатом содержимое масивов $arrFilterSession и $_GET, может может
 

mit

Новичок
Выдается то что и должно выдаваться. Заполненные массивы.
 

podarok

Новичок
Ключи из $_GET вынь в массив, и уже его сравнивай с исходным.

array_intersect($arrFilterSession, array_keys($_GET));
 

bgm

&nbsp;
mit
Нужно чтобы при пересечении массива $array и $_GET выдавало TRUE (т.е. если существует $_GET['var1"] либо $_GET["var2"] выдавало TRUE, а если не пересекаются то false).
Пробовал использовать array_intersect_key() ... не совсем подходит. Собственно вопрос ... как вычислить пересечение? Заранее спасибо за ответы.
А почему бы, вместо того, чтобы искать готовые функции, просто не написать три строчки очень простого кода?
 

Sokil.Dmytro

Новичок
тогда придется перебирать массивы в худшем случае count($arr1)*count($arr2) раз, что лучше передать шустрому компилированному сишному коду чем парсируемому коду пхп

хотя с другой стороны интерсект их всеравно переберет а при переборе можно выйти раньше при первом нахождении
 

Фанат

oncle terrible
Команда форума
Sokil.Dmytro
или ты сейчас приводишь здесь выигрыш в цифрах, или выметаешься, так, чтобы духу твоего здесь не было.
 

Sokil.Dmytro

Новичок
Фанат

засунь свой комплекс гениальности себе в зад

-~{}~ 02.04.07 16:29:

Бамбук

почему один?
 

Sokil.Dmytro

Новичок
я уже понял! логично :)

-~{}~ 02.04.07 16:41:

так шустрее будет :)

$result = FALSE;
foreach ($array as $val) {
if (isset($_GET[$val])) {
$result = TRUE;
break;
}
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху