将 php 数组转换为 Javascript

2022-08-30 01:09:15

如何以这样的格式转换PHP数组

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
)

到以下格式的Javascript数组?

var cities = [
    "Aberdeen",
    "Ada",
    "Adamsville",
    "Addyston",
    "Adelphi",
    "Adena",
    "Adrian",
    "Akron",
    "Albany"
];

答案 1

我将假设您为PHP和JS提供的两个数组并不相关,它们只是数组在这两种语言中的外观示例。显然,您将无法将这些字母和数字序列转换为这些城市名称。

PHP提供了一个将PHP数组转换为Javascript代码的函数:json_encode()。(从技术上讲,它是JSON格式;JSON代表JavaScript Object Notation)

像这样使用它:

<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>

另请参阅我上面链接的手册页以获取更多信息。

请注意,它仅在 PHP 5.2 及更高版本中可用,因此,如果您使用的是旧版本,则需要使用现有版本 - PHP 手册页还包括由需要它的人编写的函数的注释。(但话虽如此,如果您使用的是早于PHP 5.2的内容,则应尽快升级)json_encode()


答案 2

斯普德利的回答很好

安全声明:您不再需要以下各项

如果你没有 PHP 5.2,你可以使用这样的东西:

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), ';';