如何在PHP中向数组添加许多值?

时间:2014-08-28 00:32:38

标签: php mysql

我的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);


 ?>

2 个答案:

答案 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']);