excecute a php file inside an 'if' condition


excecute a php file inside an 'if' condition

我必须在循环中执行一些代码,但每次我试图将所有代码放入下面的循环中时,结果集就会变得疯狂,给我不真实的数据。
所以我想试着把循环从我的代码中去掉。我试过这个代码:

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';
    }
}

它不起作用。怎么了?

如果你需要将代码分解成多个文件,那么最好的解决方法就是不要在每次迭代中都包含该文件,而是在新文件中定义一个函数并调用该函数。(这就是为什么上帝发明了函数,否则我们就会到处包含文件)。使用include可以工作,但看起来像一个丑陋的黑客。

就像这样做:

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将简单地获取文件内容并解析它,就像它只是在当前文件中一样。不能向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
    }
}