我有一个for loop
。
$TOTAL_GOALS = 5;
for($i= 1; $i<=$TOTAL_GOALS; $i++) {
$EACH_POST_QUERY = mysql_query("SELECT item_id FROM likes WHERE item_id='$i'");
$EACH_POST_TOTAL_LIKES = mysql_num_rows($EACH_POST_QUERY);
$EACH_POST_RESULT = array();
$EACH_POST_RESULT[$i] = $EACH_POST_TOTAL_LIKES;
}
在循环中,我动态地激发查询并将结果提取到一个名为$EACH_POST_TOTAL_LIKES
的变量中。
我想在此基础上创建一个关联数组。因此,我创建了一个名为$EACH_POST_RESULT = array();
的数组,并将值推入其中
我得到的输出是最后一个元素-例如:
3:16
我的预期输出是-
1:12
2:14
3:16
我正在使用这个将结果发送到JS
$SERVER_DATA = array("TG"=>$TOTAL_GOALS, "EACH_POST_LIKES"=> $EACH_POST_RESULT);
echo json_encode($SERVER_DATA);
控制台只显示最后一个条目。为什么数组要覆盖值并存储最后一个值?
缺少什么?
每次在循环中创建array
。如果您想一次性获得所有参数的计数,我建议您使用MySQL Between Clause
在单个查询中实现这一点。
$TOTAL_GOALS = 5;
$EACH_POST_RESULT = array();
for ($i = 1; $i <= $TOTAL_GOALS; $i++) {
$EACH_POST_QUERY = mysql_query("SELECT item_id FROM likes WHERE item_id='$i'");
$EACH_POST_TOTAL_LIKES = mysql_num_rows($EACH_POST_QUERY);
array_push($EACH_POST_RESULT, $EACH_POST_TOTAL_LIKES);
}
您需要在循环之前移动此行:
$EACH_POST_RESULT = array();
否则,每次都会用一个空数组替换它!