2013-05-21 76 views
0

我必須在循環中執行一些代碼,但每次我嘗試將所有代碼放在下面的循環中時,結果集變得瘋狂,給我提供了不真實的數據。
所以我想盡量把我的代碼循環。我試過這個代碼:在'if'條件下執行php文件

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

它沒有做這項工作。哪裏不對?

+2

爲什麼不創建一個發送數據和召喚功能的類? 我不知道爲什麼,但我不喜歡在循環中包含文件的想法。 –

+0

@OfirBaruch在許多層面上這是錯誤的... – TheHippo

回答

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

包括會乾脆把文件中的內容,並解析它,彷彿它只是當前的文件中。不能將參數添加到包含調用

但是,正如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 
    } 
} 
+0

謝謝你很多nl-x!這工作就像sharm! :)) – Mirela

+0

@Mihaila不用客氣。你採取了哪種解決方案? '$ user = ...','$ _GET ['user'] = ...',還是函數方法? –

+0

我使用了函數方法,它工作得很完美!再次感謝! :) – Mirela

1

那麼,如果你需要打破你的代碼分成多個文件,最好的回答你的問題是不包括在每次迭代的文件,但新的文件中定義的函數,改爲調用該函數。 (這就是爲什麼上帝發明了功能,否則我們會到處包含文件)。使用include可以工作,但看起來像一個醜陋的黑客。

+0

我剛剛提出了你的答案,但是神真的發明了功能嗎?或者我們做了? :) –

+1

@ØHankyPankyØOMG。當然,上帝呢!褻瀆!接下來你會說OOP是進化的一部分。 :/ –

+0

上帝發明了C,上帝發明了功能(所有那些說C之前的功能都是褻瀆者的人) – rath