我必须在循环中执行一些代码,但每次我尝试将所有代码放在下面的循环中时,结果集会变得疯狂,给我不真实的数据。
所以我想要尝试将循环从我的代码中删除。我试过这段代码:
include 'soapproxy.php';
$proxy = SoapProxy::login("astar", "Astar2012", "48");
$xmlusers = $proxy->getUsersInGroup("vehicles", 0);
foreach($xmlusers->user as $user) {
if($user->id > 1){
include 'send_data_to_db.php?user=$user->id';
}
}
它不能完成这项工作。有什么问题?
答案 0 :(得分:1)
如果您需要将代码分成多个文件,那么问题的最佳答案是不在每次迭代中包含该文件,而是在新文件中定义一个函数并调用该函数。 (这就是上帝发明功能的原因,否则我们会把文件包含在各处)。使用include
可以工作,但看起来像一个丑陋的黑客。
答案 1 :(得分:0)
就这样做:
include 'soapproxy.php';
$proxy = SoapProxy::login("astar", "Astar2012", "48");
$xmlusers = $proxy->getUsersInGroup("vehicles", 0);
foreach($xmlusers->user as $user) {
if($user->id > 1 {
$user = $user->id; // or try $_GET['user'] = $_REQUEST['user'] = $user->id; if the included script MUST have the data inside $_GET or $_REQUEST.
include 'send_data_to_db.php';
}
}
Include将简单地获取文件内容并将其解析,就好像它只是在当前文件中一样。您无法为包含调用添加参数
但正如Rath所说,真正的最佳解决方案是编辑send_data_to_db.php,并使其内容成为一个函数,将$ user作为参数。然后你会做类似的事情:
include 'soapproxy.php';
include 'send_data_to_db.php'; // just include it once
$proxy = SoapProxy::login("astar", "Astar2012", "48");
$xmlusers = $proxy->getUsersInGroup("vehicles", 0);
foreach($xmlusers->user as $user) {
if($user->id > 1 {
the_function_in_send_data_to_db.php($user->id); // call the function you created in the file multiple times
}
}