[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сравнение массивов
maximka787
Ребят, помогите написать код для сравнения двух массивов или метод по которому сравнивать.

Array
(
[100] => Array
(
[0] => 111
[1] => 222
)
)

Array
(
[100] => Array
(
[0] => 111
[1] => 222
)
)


Это два разных массива, надо удалить из первого массива значения. повторяющиеся во втором в связке с ключом.

Тут 2 foreach надо или больше?



Спустя 9 минут, 9 секунд (28.03.2012 - 15:56) Winston написал(а):

Спустя 10 минут, 22 секунды (28.03.2012 - 16:07) maximka787 написал(а):
Winston
интересная статья, только не работает как нужно мне.

$array1 = array("a" => "1", "b" => "2", "c" => "3");
$array2 = array("a" => "1", "b" => "2", "c" => "4", "c" => "3");
$result = array_diff_assoc($array1, $array2);
//$result = array_intersect($array1, $array2);
//$result = array_diff($array1, $array2);

print_r($result);


выводит
Array ( ) а у меня не совпало значение "c" => "4"

Спустя 2 минуты, 49 секунд (28.03.2012 - 16:09) Renden написал(а):
maximka787
Местами поменяй)
array_diff_assoc($array2, $array1);

Спустя 3 минуты, 50 секунд (28.03.2012 - 16:13) maximka787 написал(а):
Renden
нет, сначала получилось, но как поменял местами сами элементы то и результат меняется. у меня хаотично значения расположены внутри массива.

"c" => "3", "c" => "4" // так норм
"c" => "4", "c" => "3" // так снова


Может тут проще foreach самому сделать?

Спустя 3 минуты, 21 секунда (28.03.2012 - 16:17) Renden написал(а):
maximka787
Ниче не понял, прочитай внимательно описание к функции, она возвращает тебе первый массив, значения в котором небыли найдены в последующих.

Спустя 6 минут, 18 секунд (28.03.2012 - 16:23) maximka787 написал(а):
Renden
реально тут сложнее все. у меня массивы разных размеров абсолютно, причем первый может быть короче второго и наоборот. А вот эта функция что-то не срабатывает.

$array1 = array("a" => "1", "b" => "2", "c" => "3");
$array2 = array("a" => "1", "b" => "2", "c" => "3", "c" => "4");
$result = array_diff_assoc($array2, $array1);
print_r($result);

$array1 = array("a" => "1", "b" => "2", "c" => "3");
$array2 = array("a" => "1", "b" => "2", "c" => "4", "c" => "3");
$result = array_diff_assoc($array2, $array1);
print_r($result);


Array ( [c] => 4 )
Array ( )

Спустя 5 часов, 28 минут, 45 секунд (28.03.2012 - 21:52) l@pteff написал(а):
maximka787, в массиве не должно быть одинаковых ключей\индексов. Задавай значениям разные ключи и все будет работать

$array1 = array("a" => "1", "b" => "2", "c" => "3");
$array2 = array("a" => "1", "b" => "2", "c" => "3", "d" => "4");
$result = array_diff_assoc($array2, $array1);
print_r($result);

$array1 = array("a" => "1", "b" => "2", "c" => "3");
$array2 = array("a" => "1", "d" => "3", "c" => "4", "b" => "2");
$result = array_diff_assoc($array2, $array1);
print_r($result);

Спустя 17 часов, 28 минут, 21 секунда (29.03.2012 - 15:20) maximka787 написал(а):
l@pteff
да, я понял косяк мой, вчера думал взорвусь).

сейчас разбираю как сравнить только ключи.

Спустя 4 минуты, 1 секунда (29.03.2012 - 15:24) Winston написал(а):
Цитата (maximka787 @ 29.03.2012 - 15:20)
сейчас разбираю как сравнить только ключи.

Спустя 2 минуты, 12 секунд (29.03.2012 - 15:26) maximka787 написал(а):
Winston
спасибо. великолепно. Теперь сократится код на 40-50 строк).


_____________
..Работает - не трогай!
Быстрый ответ:

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