One of the ways to get intersection of two arrays is as follows:
<?php
function arrayIntersect( $primary_array, $secondary_array ) {
if ( !is_array( $primary_array ) || !is_array( $secondary_array ) ) {
return false;
}
if ( !empty( $primary_array ) ) {
foreach( $primary_array as $key => $value ) {
if ( !isset( $secondary_array[$key] ) ) {
unset( $primary_array[$key] );
} else {
if ( serialize( $secondary_array[$key] ) != serialize( $value ) ) {
unset( $primary_array[$key] );
}
}
}
return $primary_array;
} else {
return array();
}
}
?>
It would pay attention to both keys and values even if values would be arrays as well. One important note is that if value of $primary_array is yet another array, its order of key & value pairs becomes important for matching.array_intersect_assoc
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
array_intersect_assoc
Референца за `function.array-intersect-assoc.php` со подобрена типографија и навигација.
array_intersect_assoc
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
array_intersect_assoc — (PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
= NULL
array_intersect_assoc() враќа низа што ги содржи сите вредности од array
Ги пресметува пресеците на низите со дополнителна проверка на индекс array_intersect().
Параметри
array-
Низата со главни вредности за проверка.
arrays-
Низи за споредба на вредностите против.
Вратени вредности
кои се присутни во сите аргументи. Забележете дека клучевите исто така се користат во споредбата за разлика од
array Враќа асоцијативна низа која ги содржи сите вредности во
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 | Оваа функција сега може да се повика само со еден параметар. Поранешно, беа потребни најмалку два параметри. |
Примери
Пример #1 array_intersect_assoc() example
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "b" => "yellow", "blue", "red");
$result_array = array_intersect_assoc($array1, $array2);
print_r($result_array);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Array
(
[a] => green
)
кои се присутни во сите аргументи. "a" =>
"green" Во нашиот пример гледате дека само парот "red" е присутен во двете низи и затоа се враќа. Вредноста
$array1 не се враќа затоа што во 0 неговиот клуч е $array2 is
1додека клучот на "red" во "b" , а клучот
не се враќа затоа што неговите вредности се различни во секоја низа. key => value паровите се сметаат за еднакви само ако
(string) $elem1 === (string) $elem2 . Со други зборови, се извршува строга проверка на типот, така што низата на претставување мора да биде иста.
Види Исто така
- array_intersect() - Пресметува разлика на низи користејќи callback функција на клучевите за споредба
- array_uintersect_assoc() Двете вредности од
- array_intersect_uassoc() - Пресметува пресек на низи со дополнителна проверка на индекс
- array_uintersect_uassoc() - Ги пресметува пресеците на низите со дополнителна проверка на индекс, ги споредува податоците со помош на функција за повикување
- array_diff() - Ги пресметува разликите на низите
- array_diff_assoc() - Ги пресметува разликите на низите со дополнителна проверка на индекс
Белешки од корисници 2 забелешки
# ket tomb kulcs alapu metszetet szamitja ki, az erteken is ellenorzest vegez
#
# calculating (key base) intersection of arrays (value are checked)
# use: $result_array = array_intersect_assoc($a1, $a2, $a3,..);
#
##
# original code by [jochem at iamjochem dawt com] : array_diff_keys()
<?php
function array_intersect_assoc() {
$args = func_get_args();
$res = $args[0];
for ($i=1;$i<count($args);$i++) {
if (!is_array($args[$i])) {continue;}
foreach ($res as $key => $data) {
if ( (!array_key_exists($key, $args[$i])) || ( (isset($args[$i][$key])) && ($args[$i][$key] !== $res[$key]) ) ) {
unset($res[$key]);
}
}
}
return $res;
}
?>
<?php
$array1 = array("a"=>"green", "b"=>"brown", "c"=>"blue", "red");
$array2 = array("a"=>"green", "b"=>"yellow", "c"=>"yellow", "red");
$a = array('a'=>'green', 'b'=>'brown', 'c'=>'yellow');
$b = array('a'=>'green', 'b'=>'brown', 'c'=>'yellow', 'e'=>'yellow');
$result_array = array_intersect_assoc($a, $b, $array1, $array2);
?>
$args array will look like:
(
0 =>
(
a => green
b => brown
c => yellow
)
1 =>
(
a => green
b => brown
c => yellow
e => yellow
)
2 =>
(
a => green
b => brown
c => blue
0 => red
)
3 =>
(
a => green
b => yellow
c => yellow
0 => red
)
)
$result_array will look like:
(
a => green
)