我不知道自己在我的代码中已经做了什么。在下面的示例中,我尝试在每个“电缆类型”列和每个“电路类型”的行下都有多个电缆类型,但正如您所看到的,表中只显示了一种电缆类型。
我正在尝试创建一个while循环或其他东西,因此对于每个Lane类型,它将生成与所述lane类型相关联的任意数量的电缆类型,然后继续进行下一个类型循环。对于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);
}
}
}
答案 0 :(得分:1)
为什么不使用each?更简洁的迭代数据方式
$.each(data, function(index, val){
var n = index + 1;
$('.cable_type'+n).text(val['cable_type']);
});