skipv1_0_0array_merge_recursive_distinct
Marge arrays recursively and distinct.
Description
skip\v1_0_0\array_merge_recursive_distinct();
Merges any number of arrays / parameters recursively, replacing entries with string keys with values from latter arrays. If the entry or the next value to be assigned is an array, then it automagically treats both arguments as an array. Numeric entries are appended, not replaced, but only if they are unique
Usage
if ( !function_exists( 'skip\v1_0_0\array_merge_recursive_distinct' ) ) { require_once '/includes/skip/core/functions/collected.php'; } // NOTICE! Understand what this does before running. $result = skip\v1_0_0\array_merge_recursive_distinct();
Defined (1)
The function is defined in the following location(s).
- /includes/skip/core/functions/collected.php
- function array_merge_recursive_distinct()
- {
- $arrays = func_get_args();
- $base = array_shift($arrays);
- if(!is_array($base)) $base = empty($base) ? array() : array($base);
- foreach($arrays as $append) {
- if(!is_array($append)) $append = array($append);
- foreach($append as $key => $value) {
- if(!array_key_exists($key, $base) and !is_numeric($key)) {
- $base[$key] = $append[$key];
- continue;
- }
- if(is_array($value) or is_array($base[$key])) {
- $base[$key] = skip_array_merge_recursive_distinct($base[$key], $append[$key]);
- }
- else if(is_numeric($key))
- {
- if(!in_array($value, $base)) $base[] = $value;
- }
- else {
- $base[$key] = $value;
- }
- }
- }
- return $base;
- }