2013-06-04 2 views
-4

Что делает array_intersect(); делать? Я очень новичок в кодировании, & руководство по php немного непонятно, на мой взгляд.Почему мой `array_intersect` не работает?

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

является 'yellow' в обоих массивах? :) – summea

ответ

2

Это просто дает вам новый массив с элементами, которые вы можете найти на обоих массивах. :)

+0

Спасибо, что имеет смысл! – mattnewbie

1

Прочитать последнюю строку описания. containing all the VALUES .... Ключи не рассматриваются в пересечении, а только значения. Ключи, однако, сохраняются в пересечении

+0

Привет, было интересно, есть ли опция/флаг для отключения сохранения ключей? – Aditya

3

Он возвращает массив, содержащий значения, которые находятся в каждом переданном массиве. В примере "yellow" нет в $array1, поэтому он не может находиться на пересечении.

"green" и "red" находятся в обоих массивах, поэтому они находятся в результирующем массиве с соответствующими ключами из первого массива, переданного в array_intersect.

2

Он пытается найти значения, которые находятся в array1 и array2. Если он найдет эти результаты, в результирующем массиве будут использоваться ключи первого массива.

полностью укомплектованную массивы:

$array1 = array(
    "a" => "green", 
    0 => "red", 
    1 => "blue" 
); 

$array2 = array(
    "b" => "green", 
    0 => "yellow", 
    1 => "red" 
); 

Желтый не в обоих массивах. Определенно не может быть «b» => «yellow», так как его значение может быть найдено только во втором массиве и имеет 0 в качестве ключа.

1

из PHP помощью

array_intersect() возвращает массив, содержащий все значения array1 , которые присутствуют во всех аргументах. Обратите внимание, что ключи сохраняются.

Так, b не должно быть yellow, потому что желтый не происходит в array1 в примере.

Обратите внимание, что это значения и не ключей, которые сравниваются.

Подумайте об этом. Для каждого элемента x в array1, если этот элемент x является членом каждого массива, указанного в списке аргументов после array1, тогда пересечение будет содержать x.

1

Ну, он возвращает пересечение, но смотрит в ЦЕННОСТИ. Смотрите, у вас есть только зеленый и красный цвета в обоих массивах. Оба элемента возвращаются, а ключи - из первого массива.

1

Array пересекает просто пересечение коллекций.

Если у вас есть 2 коллекции, скажем [a,b,c,d,e] и [a,b,g,e], он пересечет его (получите общие значения) и вернет его.

Таким образом, массив, пересекающийся с этими двумя кольцами, вернет [a,b,e], потому что эти элементы находятся в обеих коллекциях.

Выход из вашей функции зеленый и красный, потому что они существуют в обоих массивах.

Это серая область на рисунке показывает пересечение двух коллекций

enter image description here

+0

благодарю вас. – mattnewbie

Смежные вопросы