【问题标题】:PHP / JS: convert PHP array to JavaScript arrayPHP / JS:将 PHP 数组转换为 JavaScript 数组
【发布时间】:2014-08-02 06:50:32
【问题描述】:

我有一个 PHP 数组 ($cloud),在使用 json_encode 后,当我打印它时返回以下内容: 该数组现在包含正确的内容,但看起来与我需要的不同,这可能是为什么在我的 JS 中使用它不起作用。

当前数组如下(缩短):

Array ( [0] => Array ( [text] => item 1 [weight] => 20 ) [1] => Array ( [text] => item 2 [weight] => 19 ) [2] => Array ( [text] => item 3 [weight] => 18 ) [3] => Array ( [text] => item 4 [weight] => 17 ) [4] => Array ( [text] => item 5 [weight] => 16 ) )

有没有办法可以将其转换为如下所示的 JavaScript 数组,这是我需要的函数?

var word_array = [
    {text: "item 1", weight: 20},
    {text: "item 2", weight: 19},
    {text: "item 3", weight: 18},
    {text: "item 4", weight: 17},
    {text: "item 5", weight: 16},
];

很遗憾,我无法在此处提供更多信息,因为我不知道如何做到这一点。 我尝试将其简单地回显到 JS 变量中,但这不起作用,因为格式不是函数所期望的。

非常感谢蒂姆的任何提示。

【问题讨论】:

  • 它实际上将数组返回为您的格式...但是如果 js 无法识别它,那么您可以使用 eval(yourphpencodedarray) 或 JSON.parse(yourphpencodedarray)
  • 谢谢!我将如何在这里使用它?
  • 你需要使用JSON.parse(array)在javascript中使用它。示例:

标签: javascript php arrays loops


【解决方案1】:

为此,您必须编写自己的函数。这个应该可以,但不必:

$json = "[ \n";
foreach($array as $element) {
    $obj = array();
    foreach($element as $key => $val) {
        if(is_numeric($val)) {
            $obj[] = $key.": ".$val;
        } else {
            $obj[] = $key.": \"".$val."\"";
        }
    }
    $json .= "{".implode(", ", $obj)."},\n";
}
$json .= "\n ];";

【讨论】:

    【解决方案2】:
    $.getJSON('/phpscript.php', function(data){
       var word_array =  data;
    })
    

    你不应该直接将 php 代码回显到 js 中,通过 ajax 获取它。了解web2.0的概念,让你在php开发中走在前列,而你的同行还在使用过时的MVC和其他策略。

    服务器端你应该使用它来返回你的数组:

    die(json_encode($array));
    

    一旦您将数组重新放入 js 中,您将需要学习使用它。 首先,使用控制台日志记录它

    console.log(word_array);
    

    您应该会在浏览器的控制台选项卡中看到一个带有键名/值的对象。

    现在您需要使用它。

    for(var i = 0; i < word_array.length; i++){
    
       $('#example').append('<p>'+word_array[i].keyname+'</p>');
    
    }
    

    其中keyname 是您要访问的数组的键。

    【讨论】:

    • 谢谢!服务器部分工作,现在以我需要的方式返回数组,但在 JS 端我什么也没得到。 JS 如何知道上面我指的是哪个数组?抱歉,我对此很陌生。
    • @user2571510 更新了示例以教您如何在 javascript 中使用数组。我忘了我的例子需要jQuery。使用普通的 js 会更复杂一些。我假设你知道 jQuery 是什么并且知道如何将它包含在你的 html 文档中。
    • 非常感谢 - 这真的很有帮助,而且效果很好!
    【解决方案3】:

    简单使用此代码

    PHP

    $arr_ouput = array();
    foreach($clould as $arr)
    {
        $arr_temp = array();
        foreach($arr as $key=>$val)
        {
            $str2 = $key.':"'.$val.'"';
            $arr_temp[] = $str2;
        }
        $str_temp = '{'.implode(",", $arr_temp).'}';
        $arr_ouput[] = $str_temp;
    }
    $str = '['.implode(",", $arr_ouput).']';
    

    JS

    <script>
    var word_array = <?php echo $str;?>;
    </script>
    

    WORKING DEMO

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 2014-12-20
      • 2011-08-02
      • 1970-01-01
      相关资源
      最近更新 更多