Flatten array

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
public function array_flatten($a, $f = array()) {
    if (!$a || !is_array($a)) {
        return '';
    }
    if (is_array($a) && count($a)) {
        foreach ($a as $k => $v) {
            if (is_array($v)) {
                $f = mslib_befe::array_flatten($v, $f);
            } else {
                $f[$k] = $v;
            }
        }
    }
    return $f;
}

If you want to keep the prefix of the parent key then use:

function array_flatten($array, $prevKey = '') {
	if (!is_array($array)) {
		return FALSE;
	}
	$result = array();
	foreach ($array as $key => $value) {
		if (is_array($value)) {
			$result = array_merge($result, self::array_flatten($value, $key));
		}
		else {
			if ($prevKey) {
				$keyName=$prevKey . '[' . $key.']';
			} else {
				$keyName=$key;
			}
			$result[$keyName] = $value;
		}
	}
	return $result;
}