我有两个表:users
和scripts
。用户有列user_id
,脚本有两个:script_id
和cron_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。您需要的数据仍在$脚本中。你只需要正确地初始化它,你就完成了。