Foreach только принимает первое значение из массива - PullRequest
0 голосов
/ 27 августа 2011

У меня есть следующий код:

         $referrals = inputFilter($_POST['referralsIds']);
         $array =explode(",",$referrals);

         foreach($array as $key=>$value):

            /
            $s=mysql_query("SELECT * FROM users WHERE upline='".$userdata['id']."' AND id='$value'");
            $num_rows=mysql_num_rows($s);

            if($num_rows==0)
                return 2;

        // No error found and the update was succesful - Return success!            
            mysql_query("UPDATE users SET upline='' WHERE id='$value'");
            mysql_query("UPDATE users SET rbalance=rbalance-".$sdata['direct_delete_fee'].", direct_referrals=direct_referrals-1 WHERE username='".$userdata['username']."'");

            return 100; 

         endforeach;

Переменная $ referrals публикует два значения (10,11). Но когда я помещаю его в цикл foreach, он будет выполнять запрос только спервое значение (10).Как это сделать, чтобы запустить все значения, представленные?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 27 августа 2011

У вас есть return 100 внутри вашего цикла for.Он завершает цикл на своей первой итерации.

return операторы завершают функцию включения.Если вам нужно вернуть несколько результатов, подумайте о том, чтобы поместить их в массив, а затем вернуть массив после завершения.

2 голосов
/ 27 августа 2011

У вас есть код, возвращаемый до конца вашего для каждого

     return 100; //HERE
 endforeach;

Вы, вероятно, хотите:

endforeach;
return 100;
0 голосов
/ 27 августа 2011

Вы возвращаете 100 из любой функции, в которой вы находитесь на первой итерации цикла. возврат приведет к немедленному прекращению цикла.

0 голосов
/ 27 августа 2011

Итак, у вас есть два значения, а затем вы взорвали его?: O Но я думаю, что вы имели в виду $ array.

У вас есть return 100, который будет возвращаться из функции, а также из foreach.

...