Return to Snippet

Revision: 37423
at December 10, 2010 00:08 by BrunoDeBarros


Initial Code
/**
 * Print an array (recursive) as PHP code (can be pasted into a php file and it will work).
 * @param array $array
 * @param boolean $return (whether to return or print the output)
 * @return string|boolean (string if $return is true, true otherwise)
 */
function printArrayAsPhpCode($array, $return = false) {
    if (count($array) == 0) {
        if (!$return) {
            print "array()";
            return true;
        } else {
            return "array()";
        }
    }
    $string = "array(";
    if (array_values($array) === $array) {
        $no_keys = true;
        foreach ($array as $value) {
            if (is_int($value)) {
                $string .= "$value, ";
            } elseif (is_array($value)) {
                $string .= printArrayInPHPFormat($value, true) . ",\n";
            } elseif (is_string($value)) {
                $string .= "$value', ";
            } else {
                trigger_error("Unsupported type of \$value, in index $key.");
            }
        }
    } else {
        $string .="\n";
        foreach ($array as $key => $value) {
            $no_keys = false;
            if (is_int($value)) {
                $string .= "\"$key\" => $value,\n";
            } elseif (is_array($value)) {
                $string .= "\"$key\" => " . printArrayInPHPFormat($value, true) . ",\n";
            } elseif (is_string($value)) {
                $string .= "\"$key\" => '$value',\n";
            } else {
                trigger_error("Unsupported type of \$value, in index $key.");
            }
        }
    }
    $string = substr($string, 0, strlen($string) - 2); # Remove last comma.
    if (!$no_keys) {
        $string .= "\n";
    }
    $string .= ")";
    if (!$return) {
        print $string;
        return true;
    } else {
        return $string;
    }
}

Initial URL
http://terraduo.com

Initial Description
Prints an array (recursive) as PHP code (can be pasted into a php file and it will work).

Note: This function can process arrays with integers/strings/sub-arrays. It is impossible to process resources (they have a state), and while it is possible to process objects, I didn't see a need for it. However, if you need it to support objects as well, I'll be more than happy to alter the function. Just drop a comment to let me know.

Initial Title
Output/Print an array as PHP code.

Initial Tags
php, array

Initial Language
PHP