$maVal) { $found = false; foreach($array as $aKey => $aVal) { if ((string)$maKey == (string)$aKey){ $found = true; if (is_array($maVal) && is_array($aVal)){ $array[$maKey] = static::merge($aVal, $maVal); } else { if (is_array($aVal)){ $array[$maKey] = static::merge($aVal, array($maVal)); } elseif (is_array($maVal)){ $array[$maKey] = static::merge(array($aVal), $maVal); } else { //merge logic if (!is_numeric($maKey)){ $array[$maKey] = $maVal; } elseif (!in_array($maVal, $array)) { $array[] = $maVal; } //END: merge ligic } } break; } } // add an item if key not found if (!$found){ $array[$maKey] = $maVal; } } return $array; } /** * Get a full path of the file * * @param string $folderPath - Folder path, Ex. myfolder * @param string $filePath - File path, Ex. file.json * * @return string */ public static function concatPath($folderPath, $filePath='') { if (empty($filePath)) { return $folderPath; } else { if (substr($folderPath, -1) == static::getSeparator()) { return $folderPath . $filePath; } return $folderPath . static::getSeparator() . $filePath; } } /** * Convert array to object format recursively * * @param array $array * @return object */ public static function arrayToObject($array) { if (is_array($array)) { return (object) array_map("static::arrayToObject", $array); } else { return $array; // Return an object } } /** * Convert object to array format recursively * * @param object $object * @return array */ public static function objectToArray($object) { if (is_object($object)) { $object = (array) $object; } return is_array($object) ? array_map("static::objectToArray", $object) : $object; } } ?>