- Намиране на разлики в многомерни масиви?
12
WT форуми -> PHP MySQL ASP.NET -> Намиране на разлики в многомерни масиви?
Създайте нова тема Напишете отговор 
Автор Съобщение
streleca_stz
Турист
Турист

Регистриран на: 13/07/2009 12:30 am

Support: 6
Bonus: 12
Мнения: 486
Мнение 19/08/2017 9:07 pm      Отговорете с цитат


Ами всички работят, но не точно, защото ако да речем в първи масив липсва key3, а във втория е наличен - то тогава не го намира като разлика... С които и примери да пробвах все се сблъсквах с този проблем (дори и тези от stackoverflow)
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
Revelation
Турист
Турист

Регистриран на: 24/03/2013 3:23 pm

Support: 39
Bonus: 78
Мнения: 559
Мнение 20/08/2017 5:15 pm      Отговорете с цитат


Това мисля, че вече ще ти свърши работа.

PHP code:

function array_diff_recursive($a1, $a2) {
$result = array();
$loopArray = (sizeof($a1) >= sizeof($a2)) ? $a1 : $a2;
$len = sizeof($loopArray);

$quit = false;
for ( $i = 0; $i < $len; $i++ ) {
$oppositeArray = ($loopArray === $a1) ? $a2 : $a1;
$oppositeArrayKeys = array_keys($oppositeArray);
$loopArrayKeys = array_keys($loopArray);

if ( array_key_exists($loopArrayKeys[$i], $oppositeArray) ) {
if ( is_array($loopArray[$loopArrayKeys[$i]]) && is_array($oppositeArray[$loopArrayKeys[$i]]) ) {
$result[$loopArrayKeys[$i]] = array_diff_recursive($loopArray[$loopArrayKeys[$i]], $oppositeArray[$loopArrayKeys[$i]]);
}
else {
if ( $loopArray[$loopArrayKeys[$i]] !== $oppositeArray[$loopArrayKeys[$i]] ) {
$result[$loopArrayKeys[$i]] = $loopArray[$loopArrayKeys[$i]];
}
}
} else {
$result[$loopArrayKeys[$i]] = $loopArray[$loopArrayKeys[$i]];
}

if ( $i == ($len-1) && !$quit ) {
$temp = $oppositeArray;
$oppositeArray = $loopArray;
$loopArray = $temp;
$i = 0;
$quit = true;
$len = sizeof($loopArray);
}
}

return $result;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
12
Страница 2 от 2


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети