Skip to content

Instantly share code, notes, and snippets.

@itowhid06
Forked from SeanCannon/array_flatten.php
Created March 19, 2018 12:01
Show Gist options
  • Save itowhid06/cfec67436b7089b4a7639a8f1ec40a01 to your computer and use it in GitHub Desktop.
Save itowhid06/cfec67436b7089b4a7639a8f1ec40a01 to your computer and use it in GitHub Desktop.
PHP array_flatten() function. Convert a multi-dimensional array into a single-dimensional array.
<?php
/**
* Convert a multi-dimensional array into a single-dimensional array.
* @author Sean Cannon, LitmusBox.com | seanc@litmusbox.com
* @param array $array The multi-dimensional array.
* @return array
*/
function array_flatten($array) {
if (!is_array($array)) {
return false;
}
$result = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$result = array_merge($result, array_flatten($value));
} else {
$result[$key] = $value;
}
}
return $result;
}
@itowhid06
Copy link
Author

itowhid06 commented Mar 19, 2018

$myarray = array('a', 'b', array(array(array('x'), 'y', 'z')), array(array('p')));

function array_flatten($array,$return) {
        if (!is_array($array)) { 
                return false; 
        } 
	for($x = 0; $x <= count($array); $x++) {
		if(is_array($array[$x])) {
			$return = array_flatten($array[$x], $return);
		}
		else {
			if(isset($array[$x])) {
				$return[] = $array[$x];
			}
		}
	}
	return $return;
}

$res = array_flatten($myarray, array());

@itowhid06
Copy link
Author

itowhid06 commented Mar 19, 2018

function array_flatten($array = null) {
    $result = array();

    if (!is_array($array)) {
        $array = func_get_args();
    }

    foreach ($array as $key => $value) {
        if (is_array($value)) {
            $result = array_merge($result, array_flatten($value));
        } else {
            $result = array_merge($result, array($key => $value));
        }
    }

    return $result;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment