2010-10-12 103 views
2

我有一个这样的数组:插入PHP数组到Javascript数组

Array 
(
[0] => Array 
    (
     [id] => 9826 
     [tag] => "php" 
    ) 

[1] => Array 
    (
     [id] => 9680    
     [tag] => "perl" 
    ) 

) 

我想这传递给一个JavaScript变量,看起来像这样:

var availableTags = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "BASIC", 
     "C", 
     "C++", 
     "Clojure", 
     "COBOL", 
     "ColdFusion", 
     "Erlang", 
     "Fortran", 
     "Groovy", 
     "Haskell", 
     "Java", 
     "JavaScript", 
     "Lisp", 
     "Perl", 
     "PHP", 
     "Python", 
     "Ruby", 
     "Scala", 
     "Scheme" 
    ]; 

我有这个迄今为止得到:

var availableTags = [ 
     <?php 
         foreach($Tags as $tag){ 
           echo $tag['tag']; 
         } 
        ?> 
    ]; 

我遇到的问题是在每个标记周围添加双引号,并在每个标记之后插入一个逗号从最后。

我不确定如何做到最好?

回答

10

保存自己的一些代码:

var availableTags = <?php 
function get_tag($value) { 
    return $value['tag']; 
} 
echo json_encode(array_map("get_tag", $Tags)); 
?> 
+0

+1,这正是'json_encode'的用处。但它不是很正确,你需要在PHP中创建一个'tag'和'json_encode'数组。 – Skilldrick 2010-10-12 13:26:15

+0

@Skilldrick - 的确你是对的。代码适当更改。 – thetaiko 2010-10-12 13:32:53

+0

使用lambda代替命名函数。 'array_map(function($ this){/ ** /},$ Tags);'除此之外,+1 – BBonifield 2010-10-12 13:50:53

6
var availableTags = [ 
<?php 
    $tag_strings = array(); 
    foreach($Tags as $tag){ 
     $tag_strings[] = '"'.$tag['tag'].'"'; 
    } 
    echo implode(",", $tag_strings); 
    ?> 
]; 
+0

打我吧:) – 2010-10-12 13:19:51

+0

由于工作一种享受! – iamjonesy 2010-10-12 13:22:10

2
var availableTags = [ 
     <?php 
         foreach($Tags as $tag){ 
           echo '"'.$tag['tag'].'",'; 
         } 
        ?> 
    ]; 
+1

额外的逗号将打破IE浏览器。 – 2010-10-12 13:34:51

+0

嗯jQuery处理这个,但经过测试,你们是对的。呃,学习 – 2010-10-12 13:48:32

0
<?php 
$arr = array(
0 => array("id" => 9826, "tag" => "php"), 

1 => array("id" => 9680, "tag" => "perl") 
); 

$my_array; 

foreach($arr as $key=>$val) { 
    $my_array[] = $arr[$key]['tag']; 
} 

$availableTags = json_encode($my_array); 
echo $availableTags; 
?> 
1

尝试:

var availableTags = <?php 
echo json_encode(array_map(create_function('$v','return $v[\'tag\'];'), $Tags)); 
?>;