将php数组转换为Javascript

use*_*878 171 javascript php arrays

如何以这样的格式转换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
)
Run Code Online (Sandbox Code Playgroud)

以下面的格式的Javascript数组?

var cities = [
    "Aberdeen",
    "Ada",
    "Adamsville",
    "Addyston",
    "Adelphi",
    "Adena",
    "Adrian",
    "Akron",
    "Albany"
];
Run Code Online (Sandbox Code Playgroud)

Spu*_*ley 417

我将假设您为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>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,另请参阅上面链接的手册页.

请注意,json_encode()仅在PHP 5.2及更高版本中可用,因此如果您使用的是旧版本,则需要使用现有版本- PHP手册页还包含由需要它的人编写的功能的注释.(但是,如果你使用的是比PHP 5.2更旧的东西,你应该尽快升级)


Udo*_*o G 56

斯普德利的答案很好.

安全注意事项: 您不再需要以下内容

如果你没有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), ';';
Run Code Online (Sandbox Code Playgroud)

  • 即使您使用旧的PHP,也不要编写自己的PHP,请使用由多个人/项目维护/使用的现有库.所以这个答案只显示了可以做些什么,但它不应该推荐这个 - 不管PHP版本如何.例如http://pear.php.net/package/Services_JSON (5认同)
  • 同意:如果您使用的是旧PHP,则需要编写自己的PHP。但是,如果可能的话,您还应该考虑升级PHP! (2认同)

Eri*_*ric 35

愚蠢而简单:

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

  • **出于好奇**:当字符串包含引号,双引号和/或逗号时会发生什么? (6认同)

Jay*_*han 29

您不必调用parseJSON,因为输出json_encode是javascript文字.只需将其分配给js变量即可.

<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>
Run Code Online (Sandbox Code Playgroud)


Dip*_* KC 22

你可以使用php的json_encode函数将php数组转换为javascript

<?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'
    )
?>
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">

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

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

 </script>
Run Code Online (Sandbox Code Playgroud)

  • @Eric这个例子直接被__as从问题中解决了.我可以使用```console.log()```但问题本身是非常基本的(用户很多都没有使用浏览器代码检查工具的经验),所以我决定使用alert(),因为用户将直接看到它.但是你知道它不是问题的关注部分,只是一种验证逻辑是否有效的方法. (7认同)
  • 这个循环很糟糕 (2认同)
  • 那是出于演示目的:) (2认同)

use*_*931 14

我发现在Javascript中使用PHP数组的最快捷最简单的方法是:

PHP:

$php_arr = array('a','b','c','d');
Run Code Online (Sandbox Code Playgroud)

使用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);?>');
Run Code Online (Sandbox Code Playgroud)


اسم*_*ارع 10

很简单 ...!

使用此方法:

<?php echo json_encode($your_array); ?>; 
Run Code Online (Sandbox Code Playgroud)

在laravel blade {{}}中使用此方法:

{{ str_replace('&quot;', '', json_encode($your_array)) }} 
Run Code Online (Sandbox Code Playgroud)

为关联和非关联数组工作.


Rad*_*dez 10

很简单我用这种方式:

爪哇脚本

var arrayJavascript = <?php echo json_encode($arrayPhp) ?>;
Run Code Online (Sandbox Code Playgroud)

PHP 数组转换为 Javascript

问候!


小智 6

你也可以这样做

<script>  
    <?php 
        $php_array = array('abc','def','ghi');
        $code_array = json_encode($php_array);
    ?>  
    var array_code = <?php echo $code_array; ?>;
    console.log(array_code);
</script>
Run Code Online (Sandbox Code Playgroud)