codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
<?php function arrayRecursiveDiff($array1, $array2){ $aReturn = array(); foreach ($array1 as $mKey => $mValue) { if (is_array($array2) && array_key_exists($mKey, $array2)) { if (is_array($mValue)) { $aRecursiveDiff = arrayRecursiveDiff($mValue, $array2[$mKey]); if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; } } else { if ($mValue != $array2[$mKey]) { $aReturn[$mKey] = $mValue; } } } else { $aReturn[$mKey] = $mValue; } } return $aReturn; } function arrayIsDeeper($array, $level = 1){ $current_depth = 1; foreach($array as $value) if(is_array($value)) { $current_depth ++; if($current_depth > $level) return true; else return arrayIsDeeper($value, $level-1); } return false; } function arrayRecursiveReindex(&$array){ // if this is a if(!arrayIsAssoc($array)){ $array = array_values($array); } if(arrayIsDeeper($array, 1)){ foreach($array as $key => $value){ if(is_array($value)) arrayRecursiveReindex($array[$key]); } } } function arrayIsAssoc($arr) { foreach(array_keys($arr) as $key) if(!is_integer($key)) return true; return false; } $a = array("installed" => array('somevalue2', 'somevalue1', array('somethingelse2'), 'somevalue3'), "backend" => array("preload" => array('somevalue4'=>array('value1', 'value2','value3'),'somevalue5'))); $b = array("installed" => array('somevalue2', array('somethingelse'), 'somevalue5', 'somevalue10'), "backend" =>array("preload" => array('somevalue4'=>array('value1', 'value4','value5'),'somevalue6'))); var_dump($aDiff=arrayRecursiveDiff($a, $b)); var_dump(arrayIsDeeper($aDiff, 2)); arrayRecursiveReindex($aDiff); var_dump($aDiff);
Private
[
?
]
Run code
Submit