Convert php array to Javascript

Convert php array to Javascript

How can I convert a PHP array in a format like this
Array
(
[0] => 001-1234567
[1] => 1234567
[2] => 12345678
[3] => 12345678
[4] => 12345678
[5] => AP1W3242
[6] => AP7X1234
[7] => AS1234
[8] => MH9Z2324
[9] => MX1234
[10] => TN1A3242
[11] => ZZ1234
)

to a Javascript array in the format below?
var cities = [
“Aberdeen”,
“Ada”,
“Adamsville”,
“Addyston”,
“Adelphi”,
“Adena”,
“Adrian”,
“Akron”,
“Albany”
];

Solutions/Answers:

Solution 1:

Spudley’s answer is fine.

Security Notice: The following should not be necessary any longer for you

If you don’t have PHP 5.2 you can use something like this:

function js_str($s)
{
    return '"' . addcslashes($s, "\0..\37\"\\") . '"';
}

function js_array($array)
{
    $temp = array_map('js_str', $array);
    return '[' . implode(',', $temp) . ']';
}

echo 'var cities = ', js_array($php_cities_array), ';';

Solution 2:

I’m going to assume that the two arrays you’ve given for PHP and JS are not related, and they’re just examples of how arrays look in the two languages. Clearly you’re not going to be able to convert those sequences of letters and numbers into those city names.

Related:  how to use webpack to load CDN or external vendor javascript lib in js file, not in html file

PHP provides a function to convert PHP arrays into Javascript code: json_encode(). (technically, it’s JSON format; JSON stands for JavaScript Object Notation)

Use it like this:

<script type='text/javascript'>
<?php
$php_array = array('abc','def','ghi');
$js_array = json_encode($php_array);
echo "var javascript_array = ". $js_array . ";\n";
?>
</script>

See also the manual page I linked above for more information.

Note that json_encode() is only available in PHP 5.2 and up, so if you’re using an older version, you’ll need to use an existing one — the PHP manual page also includes comments with functions written by people who needed it. (but that said, if you’re using anything older than PHP 5.2 you should upgrade ASAP)

Solution 3:

Dumb and simple :

var js_array = [<?php echo '"'.implode('","', $php_array).'"' ?>];

Solution 4:

You do not have to call parseJSON since the output of json_encode is a javascript literal. Just assign it to a js variable.

<script type="text/javascript">
    //Assign php generated json to JavaScript variable
    var tempArray = <?php echo json_encode($php_array); ?>;

   //You will be able to access the properties as 
    alert(tempArray[0].Key);
</script>

Solution 5:

you can convert php arrays into javascript using php’s json_encode function

<?php $phpArray = array(
          0 => 001-1234567, 
          1 => 1234567, 
          2 => 12345678, 
          3 => 12345678,
          4 => 12345678,
          5 => 'AP1W3242',
          6 => 'AP7X1234',
          7 => 'AS1234',
          8 => 'MH9Z2324', 
          9 => 'MX1234', 
          10 => 'TN1A3242',
          11 => 'ZZ1234'
    )
?>
<script type="text/javascript">

    var jArray= <?php echo json_encode($phpArray ); ?>;

    for(var i=0;i<12;i++){
        alert(jArray[i]);
    }

 </script>

Solution 6:

I find the quickest and easiest way to work with a PHP array in Javascript is to do this:

Related:  How can I capture the right-click event in JavaScript? [duplicate]

PHP:

$php_arr = array('a','b','c','d');

Javascript:

//this gives me a JSON object
js_arr = '<?php echo JSON_encode($php_arr);?>';


//Depending on what I use it for I sometimes parse the json so I can work with a straight forward array:
js_arr = JSON.parse('<?php echo JSON_encode($php_arr);?>');