如何将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"
];

当前回答

这里有许多好的和复杂的解决方案,这是一种不需要在用户端解析json的方法。

$mtc=array();
$replace=array();

$x = json_encode($thearray);

preg_match_all('/"[a-z0-9_]*":/',$x,$mtc);

foreach($mtc[0] as $v){
    array_push($replace,str_replace('"','',$v));
}
    
$x = str_replace($mtc[0],$replace,$x);

echo '<script type="text/javascript">x='.$x.';console.log(x);</script>';

这适用于具有多个级别的索引数组和关联数组(任何组合),并且不需要用户端json解析。

其他回答

愚蠢而简单:

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

下面是一个将PHP数组转换为JavaScript数组的非常简单的技巧:

$array = array("one","two","three");

JS下面:

// Use PHP tags for json_encode()

var js_json =  json_encode($array);
var js_json_string = JSON.stringify(js_json);
var js_json_array = JSON.parse(js_json_string);

alert(js_json_array.length);

这招很管用。

您不必调用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>

这里有许多好的和复杂的解决方案,这是一种不需要在用户端解析json的方法。

$mtc=array();
$replace=array();

$x = json_encode($thearray);

preg_match_all('/"[a-z0-9_]*":/',$x,$mtc);

foreach($mtc[0] as $v){
    array_push($replace,str_replace('"','',$v));
}
    
$x = str_replace($mtc[0],$replace,$x);

echo '<script type="text/javascript">x='.$x.';console.log(x);</script>';

这适用于具有多个级别的索引数组和关联数组(任何组合),并且不需要用户端json解析。

对于Laravel用户:使用@json

var cities = @json($data);

官方文档中有解释:https://laravel.com/docs/8.x/blade#rendering-json: