【问题标题】:Inserting PHP array into Javascript array将 PHP 数组插入 Javascript 数组
【发布时间】:2011-04-24 07:46:44
【问题描述】:

我有一个这样的数组:

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'];
                        }
                    ?>
    ];

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

我不确定如何最好地做到这一点?

【问题讨论】:

    标签: php javascript arrays


    【解决方案1】:
    var availableTags = [
    <?php
      $tag_strings = array();
      foreach($Tags as $tag){
            $tag_strings[] = '"'.$tag['tag'].'"';
      }
      echo implode(",", $tag_strings);
      ?>
    ];
    

    【讨论】:

      【解决方案2】:
      var availableTags = [
              <?php
                              foreach($Tags as $tag){
                                    echo '"'.$tag['tag'].'",';
                              }
                          ?>
          ];
      

      【讨论】:

      • 多余的逗号会破坏 IE。
      • hmm jQuery 可以处理这个问题,但经过测试你们是对的。呃,学习
      【解决方案3】:

      省去几行代码:

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

      【讨论】:

      • +1,这正是json_encode 的用途。但这不太对,您需要在 PHP 中创建一个只是“标记”的数组,然后 json_encode
      • @Skilldrick - 你确实是对的。代码已适当更改。
      • 使用 lambda 而不是命名函数。 array_map(function($this){ /**/ }, $Tags); 除此之外,+1
      • @BBonifield - 除了很多人还没有使用 >= PHP 5.3 之外。
      【解决方案4】:
      <?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;
      ?>
      

      【讨论】:

        【解决方案5】:

        试试:

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

        【讨论】:

          猜你喜欢
          • 2018-08-13
          • 1970-01-01
          • 1970-01-01
          • 2011-11-10
          • 2011-04-27
          • 1970-01-01
          • 2021-10-29
          • 2011-02-20
          相关资源
          最近更新 更多