【问题标题】:Convert PDO fetchAll array to javascript array将 PDO fetchAll 数组转换为 javascript 数组
【发布时间】:2013-06-25 18:40:58
【问题描述】:

我已经搜索了一些,但我无法找到答案。

我正在为表单使用 jQuery 自动完成功能,可能的自动完成值来自数据库。

我有这个数组:

Array
(
    [0] => Array
        (
            [kurssi] => Course 1
            [0] => Course 1
            [tuotekoodi] => Course1Code
            [1] => Course1Code
        )

    [1] => Array
        (
            [kurssi] => Course2
            [0] => Course2
            [tuotekoodi] => Course2Code
            [1] => Course2Code
        )

    [2] => Array
        (
            [kurssi] => Course3
            [0] => Course3
            [tuotekoodi] => Course3Code
            [1] => Course3Code
        )

)

我需要这样(或以 jQuery Autocomplete 接受的形式):

var course = [
"Course1",
"Course2",
"Course3",
];

var code = [
"Course1Code",
"Course2Code",
"Course3Code"];

所以我必须从一个 php 数组中创建两个不同的 javascript 数组,但是怎么做呢?

【问题讨论】:

  • 您可以对数组进行 SERIALIZE 或 JSON_ENCODE - 这有帮助吗?
  • @RobW PHP Serialize 产生了这个,我不知道如何处理它:a:3:{i:0;a:4:{s:6:"kurssi";s :8:"课程 1";i:0;s:8:"课程 1";s:10:"tuotekoodi";s:11:"课程 1 代码";i:1;s:11:"课程 1 代码";} i:1;a:4:{s:6:"kurssi";s:7:"Course2";i:0;s:7:"Course2";s:10:"tuotekoodi";s:11:" Course2Code";i:1;s:11:"Course2Code";}i:2;a:4:{s:6:"kurssi";s:7:"Course3";i:0;s:7:" Course3";s:10:"tuotekoodi";s:11:"Course3Code";i:1;s:11:"Course3Code";}}
  • 尝试 serializeArray 而不是仅仅序列化 :) api.jquery.com/serializeArray
  • @Nilzone 我不确定我应该在这里使用 PHP 序列化还是 jQuery 序列化。

标签: php jquery arrays jquery-autocomplete


【解决方案1】:

这是您需要做的: 1:您的原始数组:

 $arr = [
     0=>["kursi"=>"Course1","tuotekodi"=>"Course1Code"],
     1=>["kursi"=>"Course2","tuotekodi"=>"Course2Code"],
     2=>["kursi"=>"Course3","tuotekodi"=>"Course3Code"]
     ];

2:根据需要转换您的数组以用于编码:

$toJson =array();
         foreach ($arr as $key => $value) {
             foreach($value as $k =>$v){
                 if(isset($toJson[$k])){
                     $toJson[$k][] = $v;
                 }else{
                     $toJson[$k] = array();
                     array_push($toJson[$k], $v);
                 }
             }
}

3:结果:

var_dump(json_encode($toJson));

【讨论】:

  • 我只使用了var_dump(json_encode($toJson)); 而不是echo json_encode($toJson);,现在我可以使用它了!谢谢!
  • 哦,是的,抱歉,这只是一个示例代码,用于在页面上显示结果:)。我已经使用了我自己的代码的精简版本,我曾经从 5 个表中获取数据,因为外键等原因有很多重复的行……无论如何,很高兴我能提供帮助!
【解决方案2】:

您必须使用 json_encode() 将 PHP 数组传输到 Javascript。 JQuery 有自己的 JSON 函数,可以将 JSON 字符串解码为 Javascript 对象。

【讨论】:

  • 是的,我试过 json_encode($db->fetchAll());但它只回应了[],所以我一定做错了什么?
  • @RobW 你的意思是 PDO::FETCH_ASSOC?
  • @RobW 在这种情况下,它会产生 {"kurssi":"Course 1","tuotekoodi":"Course1Code"} 而不是完整的结果。
【解决方案3】:

序列化或 json_encode 字符串。 jQuery 提供 JSON 解码方法(getJSON、parseJSON)。示例输出:http://phpfiddle.org/main/code/bpr-ndx

【讨论】:

  • 啊,是的,但是这会将 [kurssi] 和 [tuotekoodi] 放在同一个数组中,我将如何将它们分开?
猜你喜欢
  • 2013-05-15
  • 2013-08-20
  • 1970-01-01
  • 2011-08-28
  • 2014-02-02
  • 2018-03-04
  • 1970-01-01
  • 2011-11-19
  • 2015-01-31
相关资源
最近更新 更多