在javascript中是否有像运算符这样的列表?

时间:2010-01-21 17:33:45

标签: php javascript

我现在正在实现这样一个任务:我需要将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));?>

6 个答案:

答案 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()...