【问题标题】:How can i print a database query to a javascript array? [duplicate]如何将数据库查询打印到 javascript 数组? [复制]
【发布时间】:2014-09-18 05:45:50
【问题描述】:

我想在jvector map 中显示一些信息,并使用以下代码从数据库中获取信息:

$query = db_select('location', 'l')
    ->condition('l.lid', 0, '<>')
    ->fields('l', array('country'))
    ->range(0, 50);

$result = $query->execute();
$arr = [];

while($record = $result->fetchAssoc()) {
      $arr[] = $record;       
}
print_r($arr);

对于我在 Drupal 7 中使用位置模块的字段,我得到了这些数组:

Array ( 
    [0] => Array ( 
        [country] => de 
    ) 
    [1] => Array ( 
        [country] => de 
    ) 
    [2] => Array ( 
        [country] => fr 
    ) 
)

但是,我怎样才能取出这些信息,计算国家并将其显示为 javascript 显示,例如:var gdpData = { "de": 2, "Fr": 1, ... }; 用于 jvector 地图?

【问题讨论】:

    标签: javascript php arrays database drupal-7


    【解决方案1】:

    json_encode — 返回值的 JSON 表示形式

    json_encode($arr);
    

    示例:

    while($record = $result->fetchAssoc()) {
        if (isset($arr[$record["country"]])) {
            $arr[$record["country"]]++;
        } else {
            $arr[$record["country"]] = 0;
        }
    }
    
    json_encode($arr);
    

    在 javascript 中:

    JSON.parse(data);
    console.log(data.de); //2
    

    【讨论】:

    • 哇,谢谢,我尽快试试!为什么你投了反对票?
    • 我不知道,我的回答有效吗?
    • 我可以猜测你的 -1 是有人不喜欢你的编码风格,但我会 +1 因为它有效。
    • 我得到一个错误:SyntaxError:无效的箭头函数参数(箭头函数周围的括号可能会有所帮助)[0] => de 也许我做错了什么:
    • 你混合 php 和 js...
    【解决方案2】:

    您可以将包装函数 drupal_json_encode 用于 Drupal 7。

    或者,您可以将 PHP $arr 变量传递给 drupal_add_js(array('locations' =&gt; $arr), 'setting'); 并在 javascript 中按如下方式访问它:

    var gdpData = Drupal.settings.locations;

    【讨论】:

    • 非常感谢!我使用 drupal_add_js(array('location' => array_count_values($arr)), 'setting');我得到了我想要的:Object { de=2, fr=1} 非常好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2023-04-10
    • 2019-06-15
    相关资源
    最近更新 更多