1

我不知道我在代码中已经做了什么。在下面的示例中,我试图在每个电缆类型的列和行下为每个车道类型设置多种电缆类型,但正如您所见,表中的每个仅显示一种电缆类型。

我正在尝试创建一个while循环或其他东西,以便对于每个车道类型,它将产生与所述车道类型相关联的尽可能多的电缆类型,然后继续进行下一个车道类型做同样的事情。对于通道 5 和 6,我相信无论如何只有一种电缆类型,所以这些看起来是正确的。如何在 PHP 中创建一个 JSON 数组来将每种车道类型的所有电缆类型组合在一起,而不是将每种电缆类型彼此分开放置到单独的数组中?

现在发生的情况是,即使您看到每个通道名称或类型有多种电缆类型,它们是分开的,我想将它们组合在一起,所以如果我调用 array[0],这将是 Lane-1 的所有电缆类型,阵列1将调用所有 Lane-2 的电缆类型等。到目前为止,array[0] 只调用第一个 cable_type,而不是该 lane_name 的电缆类型数组。

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

当前的 PHP 吐出以下 JSON 数组

{"Lane-1":["PPAHY4614","PPAHY464","HYBP464.01","PPA241807","ADMC1807"],"Lane-2":["HYBP906.1","PPAHY906","HP464.02","PP8HY461"],"Lane-3":["HYBP421","PAADY412"]}

旧图像: 在此处输入图像描述

****目前正在工作**** 在此处输入图像描述

PHP

//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

$.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);
            }
        }
    }
4

1 回答 1

1

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

 $.each(data, function(index, val){
     var n = index + 1;
     $('.cable_type'+n).text(val['cable_type']);
 });
于 2013-10-21T17:00:02.887 回答