$final_errors = array(
'codes' => array(),
'messages' => array(),
'details' => array(),
);
$errors = array(
'codes' => array(
'0' => '4000201001'
),
'messages' => array(
'4000201001' => array(
'0' => 'Invalid Session Id.'
)
),
'details' => array(
'4000201001' => array(
'0' => array()
)
)
)
class ApiValidationHelper {
/**
* Method to merge array
*
* @param array $Arr1 array in which we need to merge
* @param array $Arr2 array to be merge
* @param string $level dimention levels codes|messages|details
* @return array
*
* @author Rajul.Mondal
* @since Oct 24, 2017
*/
public static function mergeArrays($Arr1, $Arr2, $level = '')
{
foreach ($Arr2 as $key => $Value) {
if ($key == 'codes' && is_array($Value)) {
$codes = ApiValidationHelper::MergeArrays($Arr1['codes'], $Arr2['codes'], 'codes');
$Arr1['codes'] = $codes;
} elseif ($key == 'messages' && is_array($Value)) {
$messages = ApiValidationHelper::MergeArrays($Arr1['messages'], $Arr2['messages'], 'messages');
$Arr1['messages'] = $messages;
} elseif ($key == 'details' && is_array($Value)) {
$details = ApiValidationHelper::MergeArrays($Arr1['details'], $Arr2['details'], 'details');
$Arr1['details'] = $details;
} elseif (array_key_exists($key, $Arr1) && is_array($Value)) {
$inner = ApiValidationHelper::MergeArrays($Arr1[$key], $Arr2[$key], $level);
if (isset($Arr1[$key])) {
$Arr1[$key][] = $inner;
} else {
$Arr1[$key] = $inner;
}
} else {
if ($level == 'codes' && isset($Arr1[$key])) {
$Arr1[] = $Value;
} else {
$Arr1[$key] = $Value;
}
}
}
return $Arr1;
}
$this->errors = ApiValidationHelper::mergeArrays($this->errors, $errors, '');
$this->errors['codes'] = array_unique($this->errors['codes']);
// Array
// (
// [codes] => Array
// (
// [0] => 4000201001
// )
// [messages] => Array
// (
// [4000201001] => Array
// (
// [0] => Invalid Session Id.
// )
// )
// [details] => Array
// (
// [4000201001] => Array
// (
// [0] => Array
// (
// )
// )
// )
// )
*To resolve this issue in linux env use: * array_replace_recursive