Foreach принимает только первое значение из массива

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

         $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). Как сделать так, чтобы он проходил через ВСЕ представленные значения?

Спасибо.


person Oliver 'Oli' Jensen    schedule 26.08.2011    source источник
comment
ваши операторы return выйдут из цикла при первом запуске   -  person knittl    schedule 27.08.2011


Ответы (4)


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

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

person Jared Ng    schedule 26.08.2011

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

     return 100; //HERE
 endforeach;

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

endforeach;
return 100;
person aknosis    schedule 26.08.2011

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

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

person Igoris Azanovas    schedule 26.08.2011

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

person Paul    schedule 26.08.2011