为什么我的sql查询会删除关联数组中列的标题


why my sql query drops the title of column in associative array?

我有两个表:usersscripts。用户有列user_id,脚本有两个:script_idcron_formtat。当我查询用户时:

$query = "select `user_id` from users";
$result = mysql_query($query) or die(mysql_error());
while ( $row = mysql_fetch_assoc($result)){
    array_push($usersArr,$row);
}

结果:

[{"user_id":"1"},{"user_id":"2"},{"user_id":"3"},{"user_id":"4"},{"user_id":"5"}]

我根据需要获得关联数组(带有列的标题),但为什么我的第二个查询返回所有值的数组,却删除列的标题?:

$query = "select script_id,`cron_format`  from scripts";
$result = mysql_query($query) or die (mysql_error());
while($script = mysql_fetch_assoc($result)){
    foreach($usersArr as $user){
        $userScriptCronArr[$user["user_id"]][$script["script_id"]] = $script["cron_format"];
    }
}

结果:

{"1":{"1":"*'/3 * * * *","2":"*'/6 * * * *","3":"*'/3 * * * *","4":"* * * * *"},"2":{"1":"*'/3 * * * *","2":"*'/6 * * * *","3":"*'/3 * * * *","4":"* * * * *"},"3" ...

在第二个结果中,第一个数字是user_id,并且对于每个用户im assign的每个现有脚本。为什么我的第二个查询会删除userid、scriptid和cron_format标题?

这里没有错。你得到了你的关联数组。。这是$script

while($script = mysql_fetch_assoc($result)){
    foreach($usersArr as $user){
       $userScriptCronArr[$user["user_id"]][$script["script_id"]] =    $script["cron_format"];
   }
  }

因此,您的查询没有任何问题$userScriptCronAr构造为一个包含两个数字键的多维数组。


关于角度部分:

while($script = mysql_fetch_assoc($result)){
    foreach($usersArr as $user){
       $userScriptCronArr[] = array(
           "user_id" => $user["user_id"], 
           "script_id" => $script["script_id"], 
           "cron_format" => $script["cron_format"]
       );
   }
}

这将为您提供一个JSON数组,您可以将其与角度代码一起使用。但是,请阅读手册!

在第一个输出中,您按原样推送整个查询结果。但在第二个输出中您不是推送整个结果,而是在数字数组中启动$userScriptCronAr。您需要的数据仍在$脚本中。你只需要正确地初始化它,你就完成了。