Вычисление расхождения массивов

tarya

Новичок
Добрый день друзья.

У меня встала задача определить что именно было изменено при сохранении сложной формы.

Тоесть есть форма, с любым количеством полей, некоторые поля такие что в итоге генерируется многомерный массив.

Если массив был бы одномерным, то я через array_diff могу определить что поле такое то было со значением 5, а поменялось на 6, или в обратную сторону. Но так невозможно определить что какие то поля появились новые с новыми значениями.

Как и с какой стороны подступиться к данному вопросу.

Спасибо.
 

hell0w0rd

Продвинутый новичок
tarya
на php.net обычно список функций схожей функциональности/использованных в примерах перед комментами выкладывают... подозреваю что тебе array_diff_assoc нужна)
 

Тугай

Новичок
Разверните в одномерные, как-то так:
PHP:
function f($a, &$b) { 
  foreach($a as $k=>$v) {
	 if (is_array($v)) {
	   f($v, $b);
	 } else {
	   $b[$k] = $v;
	 }
  }
}
$a = array('a' => 'vala', 'b' => array( 'c' => 'valc', 'd' => 'vald'));
$b = array();
f($a, $b);
print_r($b);
--
Array ( [a] => vala [c] => valc [d] => vald )
 
Сверху