首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL数据在PHP中操作JSON数组

使用SQL数据在PHP中操作JSON数组
EN

Stack Overflow用户
提问于 2013-10-21 16:43:43
回答 1查看 498关注 0票数 1

我不知道我在做什么,已经超过了代码中这里的内容。在下面的示例中,我试图在每个线缆类型列和行下为每个Lane类型设置多个线缆类型,但正如您所看到的,表中的每个电缆类型都只显示了一种电缆类型。

我正在尝试创建一个with循环或其他什么,这样它将产生与所述车道类型相关联的相同数量的线缆类型,然后转移到下一个车道类型进行相同的操作。对于5号和6号车道,我相信无论如何只有一种电缆类型,所以看起来是正确的。我如何在PHP中创建一个JSON数组来将每种线类型的所有线缆类型组合在一起,而不是仅仅将每种线缆类型分别放入单独的数组中呢?

现在发生的情况是,即使你看到每个车道名称或类型都有多个线缆类型,但它们是分开的,我想把它们组合在一起,所以如果我调用数组,这将是莱恩-1的线缆类型,阵列1会调用所有莱恩-2的电缆类型,等等。到目前为止,阵列调用的只是第一个cable_type,而不是那个lane_name的电缆类型数组。

*编辑(请参阅我的最新评论)*

当前PHP从JSON数组中释放出来

代码语言:javascript
复制
{"Lane-1":["PPAHY4614","PPAHY464","HYBP464.01","PPA241807","ADMC1807"],"Lane-2":["HYBP906.1","PPAHY906","HP464.02","PP8HY461"],"Lane-3":["HYBP421","PAADY412"]}

旧形象:

*目前工作*

PHP

代码语言:javascript
复制
//Create array
//Define JSON array
$array = array();

//Run SQL for each array value
    $query="(SELECT DISTINCT lane_name,cable_type
        FROM bundle_lanes
        WHERE lane_name != '' AND lane_name != 'Shipped')
        UNION
        (SELECT DISTINCT lane_name,gp_cable_type
        FROM bundle_lanes
        WHERE lane_name != '' AND lane_name != 'Shipped')
        ORDER BY lane_name";

    $result = $mysqli->query($query) or die($mysqli->error.__LINE__);

    while ( $row = $result->fetch_assoc() ) {
        $array[$row['lane_name']][] = $row['cable_type'];
    }

    echo json_encode($array);

Javascript

代码语言:javascript
复制
$.ajax({
    url: './php/populate_cableTypes.php',
    dataType:'json',
    success: function (data) {

        console.log(JSON.stringify(data));

        //since data length is always 1,iterate through the 17 lane types
        for (var n=1; n<=17; n++) {
            //stringify data so it can be manipulated
            var stringifyTypes = JSON.stringify(data["Lane-"+n]);
            //check first if data is not null before populating
            if (stringifyTypes != null) {
                console.log("Lane-" + n + " string cable types: " + stringifyTypes);
                //replace characters with new line breaks to format data
                var cable_types = stringifyTypes.replace(/,/g, '<br />')
                .replace(/\"/g, "")//backslash for quotes and brackets
                .replace(/\[/g, "")
                .replace(/\]/g, "");

                //Show data in newly generated cable type td column for each lane type
                $('td.Lane-'+n+'.weight').after("<td>" + cable_types + "</td>");

                console.log("Lane-" + n + " formatted cable types: " + cable_types);
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-21 17:00:02

为什么不使用每一个呢?迭代数据的更简洁的方法

代码语言:javascript
复制
 $.each(data, function(index, val){
     var n = index + 1;
     $('.cable_type'+n).text(val['cable_type']);
 });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19500193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档