2013-05-21 3 views
0

Мне нужно выполнить некоторый код в цикле, но каждый раз, когда я пытаюсь поместить его все в цикл ниже, набор результатов становится сумасшедшим, что дает мне нереальные данные.
Итак, я решил попытаться вывести цикл из моего кода. Я пробовал этот код:excecute php-файл внутри условия 'if'

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

Включить просто взять содержимое файлов и разобрать его, как будто это было только внутри текущего файла. Вы не можете добавлять аргументы к вызову include

Но самым лучшим решением было бы, как сказал Рат, изменить 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 !! это сработало, как шарм! :)) – Mirela

+0

@Mihaila приветствую вас. какое решение вы взяли? '$ User = ...', '$ _GET ['user'] = ...' или функциональный подход? –

+0

I toke функция подход, и он работал отлично! Еще раз спасибо! :) – Mirela

1

Ну, если вам нужно разбить код на несколько файлов, лучший ответ на вашу проблему, чтобы не включать в файл в каждой итерации, но определить функцию в новом файле и вызовите функцию вместо этого. (поэтому Бог изобрел функции, иначе мы будем включать файлы везде). Использование include может работать, но выглядит как уродливый хак.

+0

Я просто поддержал ваш ответ, но действительно ли Бог изобрел функции? или мы это сделали? :) –

+1

@ ØHankyPankyØ OMG. Конечно, Бог сделал! Богохульство! Следующее, что вы будете говорить, это то, что ООП является частью эволюции. :/ –

+0

Бог изобрел C, ergo God изобрел функции (все те, кто говорит, что функции существовали до того, как C - богохульники) – rath