我现在正在实现这样一个任务:我需要将PHP变量转换为javascript
$arr['name1'] = 'value1';
$arr['name2'] = 'value2';
这样在处理之后,应该是:
<script type="text/javascript">
var name1 = 'value1';
var name2 = 'value2';
...
我希望这样做:
<script>
list(<?php echo join(',',array_keys($arr)?>) = <?php echo json_encode(array_values($arr));?>
答案 0 :(得分:3)
检查php.js ,他们已将PHP的许多功能移植到JS list() is listed as experimental。
答案 1 :(得分:3)
可能误解了这个问题,但这不会起作用吗?
echo "<script>";
foreach ($arr as $k => $v)
{
echo "var $k = $v;";
}
echo "</script>";
答案 2 :(得分:1)
不,抱歉。
您可以考虑使用json_encode
将对象打印到脚本中。
<?php
$a = array('foo' => 'bar');
json_encode($a); // returns {"foo":"bar"} which is valid Javascript syntax
?>
<script>var obj = <?php echo json_encode($a); ?></script>
答案 3 :(得分:0)
你可以使用json。
var arr = { "name1" : "value1", "name2": "value2"}
然后获取一个值,你只需要像字段一样访问它
var firstVal = arr.name1
答案 4 :(得分:0)
您可能需要查看PHP JS,它可以帮助您完成转换任务。感谢
答案 5 :(得分:0)
目前只有借助有争议的'eval()'函数才有可能......
function list(v,a){
v=v.split(',');
for(var s='',i=0;i<v.length;i++)
s+=v[i]+'='+i+'<'+a+'.length?'+a+'['+i+']:null;';
return s;
}
用法:
eval(list(var_names_as_comma_separated_str, str_name_of_array));
示例:
A=['one',1,'z1'];
eval(list('x,y,z','A'));
console.log('+-> First: ',x,y,z); //output: one 1 z1
(function(){
var z,B=['two',2,'local']; //note that z is local variable
console.log('Local.Before: ',x,y,z); //output: one 1 undefined
eval(list('x,y,z','B'));
console.log('Local.After: ',x,y,z); //output: two 2 local
})()
console.log('+-> Back: ',x,y,z); //output: two 2 z1 (global z is unchanged)
注意:window ['var_name']不能用于访问局部变量(函数内部的变量),所以我们别无选择eval()...