Use array_map to prevent Array to string conversion
notice in array_diff
<?php
$arr1 = array(
'level1' => array(
'level2' => array(
'level3' => 'hello'
)
)
);
$arr2 = array('level3'=>'world');
$needle1 = array('level3'=>'hello');
$needle2 = array('level3'=>'world');
var_dump(!array_diff($arr1, $needle1));
var_dump(!array_diff($arr1, $needle2));
var_dump(!array_diff(array_map('serialize',$arr1), array_map('serialize',$needle1)));
var_dump(!array_diff(array_map('serialize',$arr1), array_map('serialize',$needle2)));
var_dump(!array_diff(array_map('serialize',$arr2), array_map('serialize',$needle1)));
var_dump(!array_diff(array_map('serialize',$arr2), array_map('serialize',$needle2)));