Есть ли список, как оператор в JavaScript? - PullRequest
1 голос
/ 21 января 2010

Я сейчас реализую такую ​​задачу: мне нужно конвертировать переменные 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 ]

3 голосов
/ 21 января 2010

Возможно, неправильно понял вопрос, но разве это не сработает?

echo "<script>";
foreach ($arr as $k => $v) 
{
    echo "var $k = $v;";
}
echo "</script>";
3 голосов
/ 21 января 2010

Проверьте php.js , они перенесли множество функций PHP на JS, list () указан как экспериментальный .

1 голос
/ 21 января 2010

Нет, извините.

Вместо этого вы можете рассмотреть возможность использования 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>
0 голосов
/ 29 февраля 2012

В настоящее время это возможно только при помощи спорного «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 () ...

0 голосов
/ 21 января 2010

Возможно, вы захотите взглянуть на PHP JS , это поможет вам в ваших задачах конвертации. Спасибо

0 голосов
/ 21 января 2010

Вы можете использовать JSON.

var arr = { "name1" : "value1", "name2": "value2"}

Затем, чтобы получить значение, вы просто получаете к нему доступ, как поле

var firstVal = arr.name1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...