如何将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"
];
如果您需要将多维PHP数组直接打印到html页面源代码中,并以一种缩进的人类可读的Javascript对象符号(又名JSON)方式,请使用我在http://php.net/manual/en/function.json-encode.php#102091中找到的这个由绰号为“bohwaz”的人编写的漂亮函数。
<?php
function json_readable_encode($in, $indent = 0, $from_array = false)
{
$_myself = __FUNCTION__;
$_escape = function ($str)
{
return preg_replace("!([\b\t\n\r\f\"\\'])!", "\\\\\\1", $str);
};
$out = '';
foreach ($in as $key=>$value)
{
$out .= str_repeat("\t", $indent + 1);
$out .= "\"".$_escape((string)$key)."\": ";
if (is_object($value) || is_array($value))
{
$out .= "\n";
$out .= $_myself($value, $indent + 1);
}
elseif (is_bool($value))
{
$out .= $value ? 'true' : 'false';
}
elseif (is_null($value))
{
$out .= 'null';
}
elseif (is_string($value))
{
$out .= "\"" . $_escape($value) ."\"";
}
else
{
$out .= $value;
}
$out .= ",\n";
}
if (!empty($out))
{
$out = substr($out, 0, -2);
}
$out = str_repeat("\t", $indent) . "{\n" . $out;
$out .= "\n" . str_repeat("\t", $indent) . "}";
return $out;
}
?>
这里有许多好的和复杂的解决方案,这是一种不需要在用户端解析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解析。
我将假设您为PHP和JS提供的两个数组并不相关,它们只是两种语言中数组的示例。显然,你无法将这些字母和数字序列转换成这些城市的名称。
PHP提供了一个将PHP数组转换为Javascript代码的函数:json_encode()。(从技术上讲,它是JSON格式;JSON代表JavaScript对象表示法
像这样使用它:
<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>
更多信息请参见我在上面链接的手册页。
请注意,json_encode()仅在PHP 5.2及更高版本中可用,因此如果您使用的是旧版本,则需要使用现有版本——PHP手册页还包括由需要它的人编写的函数注释。(但也就是说,如果你使用的是PHP 5.2以上的版本,你应该尽快升级)