作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个带有 php 后端的网络应用程序。需要在一定的时间间隔对所有用户运行检查。运行这些检查需要一些时间,更重要的是:它们不应该对不存在的用户执行。用户是从数据库接收的,可以通过运行检查中途更改。我目前的解决方案是:
<?php
require_once 'databaseUtils.php';
$users = getUsersFromDatabase();
//Sample:
while(true) {
foreach(GetUsers() as &$user) {
//I'd rather not:
if(checkIfUserIsInDatabase($user) {
var_dump($user);
sleep(1); //Checking takes time...
}
}
echo "Going again in 5s!";
sleep(5); //Interval
}
function GetUsers() {
return $users;
}
//Called from outside
function removeUser($user) {
global $users;
removeUserFromDatabase($user);
if(($key = array_search($user, $users)) !== false) {
unset($users[$key]);
}
}
?>
但我仍然在不必要地循环访问不再存在于 GetUsers() 中的用户。有没有一种方法可以遍历数组的所有值,其中的元素可以从外部删除?
最佳答案
如果要检查每个用户是否还在数据库中,则需要从数据库中查询他的信息,因此比检查数组中的每一项要花费更多的精力(如果不是更多的资源消耗)。
但我会建议让用户分成较小的部分而不是所有用户。并逐个检查。
关于PHP循环遍历动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733692/
我是一名优秀的程序员,十分优秀!