我试图得到以下数组来检查,看看当前用户是否已经在用户列表中,或者如果我需要在数组中创建一个新条目,但我不确定如何动态地做到这一点。
这是我当前的代码。我有一个以上这是工作良好的查询。我把bind_result
贴出来,这样你们就都能看到我分配的变量了。
我该怎么做?
$stmt->bind_result($ordering, $userid, $username, $playername);
$users = array();
while ($stmt->fetch()) {
$users = array(
$user = array('name' => $username, 'players' => array($playername))
);
}
print_r($users);
你需要这样的东西吗?
$users = array();
$user[] = array('name' => "1", 'players' => "players");
$user[] = array('name' => "2", 'players' => "players");
$user[] = array('name' => "3", 'players' => "players");
$user[] = array('name' => "1", 'players' => "players"); // this won't be included
$user[] = array('name' => "4", 'players' => "players");
$user[] = array('name' => "5", 'players' => "players");
foreach ($user as $u) {
if(!in_array($u, $users)) $users[] = $u;
}
print_r($users);
如果是,你只需要改变这些行
$users = array(
$user = array('name' => $username, 'players' => array($playername))
);
这些 $user = array('name' => $username, 'players' => array($playername));
if(!in_array($user, $users)) $users[] = $user;
那么你的最终代码就是
$stmt->bind_result($ordering, $userid, $username, $playername);
$users = array();
while ($stmt->fetch()) {
$user = array('name' => $username, 'players' => array($playername));
if(!in_array($user, $users)) $users[] = $user;
}
print_r($users);
<标题>编辑如果您只想检查name
键,将while改为:
while ($stmt->fetch()) {
$user = array('name' => $username, 'players' => array($playername));
foreach ($users as $uname) if ($uname['name'] == $u['name']) continue 2;
$users[] = $user;
}
就性能而言,这不是最好的方法。
标题>