сравнивая два массива php array_diff

Я получил пустой массив, когда сравнил два массива, которые имеют разные ключи, но одинаковые значения. Пример: идентификатор имеет то же значение, что и уу

$o = array('id'=>2,'name'=>'D','yy'=>12);
$n = array('id'=>12,'name'=>'D','yy'=>12);

Что я хочу это:

$a = array('id'=>12,'id'=>2);

0

Решение

Ты можешь использовать array_merge_recursive()(PHP 4 >= 4.0.1, PHP 5, PHP 7)

Из руководства по PHP:

array_merge_recursive — Слияние двух или более массивов рекурсивно

<?php

$a = array('id'=>2,'name'=>'D','yy'=>12);
$b = array('id'=>12,'name'=>'D','yy'=>12);

$result = array_merge_recursive($a, $b);

$newArr = $result['id']; // get ID index. you can also get other indexes.

echo "<pre>";
print_r($newArr);

?>

Результат:

Array
(
[0] => 2
[1] => 12
)

Обратите внимание, что: Вы не можете использовать то же имя индекса (Я БЫ) для этого массива array('id'=>12,'id'=>2);

1

Другие решения

Как уже упоминалось @Ghost, ассоциативный массив не должен иметь одинаковые ключи.
Я предлагаю достичь «ожидаемого результата» в виде «вложенных массивов», используя array_diff_assoc Функция (свычисляет разницу массивов с дополнительной проверкой индекса):

$o = array('id'=>2,'name'=>'D','yy'=>12);
$n = array('id'=>12,'name'=>'D','yy'=>12);

echo "<pre>";

$result_nested_arr = [array_diff_assoc($o, $n), array_diff_assoc($n, $o)];

var_dump($result_nested_arr);

// the output:
array(2) {
[0]=>
array(1) {
["id"]=>
int(2)
}
[1]=>
array(1) {
["id"]=>
int(12)
}
}

http://php.net/manual/en/function.array-diff-assoc.php

0

По вопросам рекламы [email protected]