我的if语句只向数组中添加了一个元素,即使它们应该添加多个元素,因为它们具有相同的标记。
<?php
include("mysqlconnect.php");
$select_query = "SELECT `ImagesId`,`ImagesPath`,`Tag` FROM `offerstbl` ORDER by `ImagesId` DESC";
$sql = mysql_query($select_query) or die(mysql_error());
$data = array();
while($rows = mysql_fetch_array($sql,MYSQL_BOTH)){
if ($rows['Tag'] == "sport"){
$data['sport'] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
}
if ($rows['Tag'] == "food"){
$data['food'] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
}
if ($rows['Tag'] == "clothes"){
$data['clothes'] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
}
}
echo json_encode($data);
?>
答案 0 :(得分:0)
您正在覆盖数组元素,而不是将新元素推送到数组上。它应该是:
$data['sport'][] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
此外,您的if
似乎没有必要,因为$data
的密钥与代码相同。只是做:
$data[$rows['Tag']][] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
我还建议为你要添加的元素使用关联数组,而不是索引数组:
$data[$rows['Tag']][] = array('ImagesId' => $rows['ImagesId'],
'ImagesPath' => $rows['ImagesPath'],
'Tag' => $rows['Tag']);
由于这些键与$rows
中的键相同,因此您可以将其简化为:
$data[$rows['Tag']][] = $rows;
您还应该使用MYSQL_ASSOC
而不是MYSQL_BOTH
,因为您永远不会访问$rows
的数字键。
答案 1 :(得分:0)
您必须更改代码中的三行
$data['sport'] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
到
$data['sport'][] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
此
$data['food'] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
到
$data['food'][] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
此
$data['clothes'] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);
到
$data['clothes'][] = array($rows['ImagesId'], $rows['ImagesPath'], $rows['Tag']);