2010-10-12 90 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)); 
?>;