PHP:获取关联数组中最后一个元素


PHP: Getting last only element in associative array

我有一个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();

否则,每次都会用一个空数组替换它!