Показать сообщение отдельно
  #10 (permalink)  
Старый 01.11.2018, 14:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от garrip91
я могу предположить(но опять же я в этом не
уверен)
Ну смотря сколько этих шариков в комнате.
Да, тяжелый случай, как же вы программировать собираетесь?

Не важно сколько шариков, вынесете вы таким способом всего один! Как можно вынести больше, если первое, что вы делаете зайдя в комнату, это выворачиваете карман, тем самым выбрасывая ранее взятый шарик. Каждый раз выходя из комнаты, вы выносите по одному шарику. А чтобы забрать все, пиджак с карманом должен висеть вне комнаты - зашли, взяли шарик, вынесли его, положили в карман пиджака, пошли за следующим. Вот тогда можно вынести все.

Так же и в циклах - если переменная должна хранить сумму, произведение и прочее, то она инициализируется вне цикла, до него, один раз. Вот что у вас:

foreach ($array as $key => $value) {
    $sum = 0; //каждый раз при каждой итерации вы обнуляете переменную (выворачиваете свой карман)
    sum = $sum + $value; //затем к нулю прибавляете значение текущей итерации, то есть предыдущих значений нет
}


$sum = 0; //инициализировали переменную (пиджак с карманом вне команты)
foreach ($array as $key => $value) {
    $sum = $sum + $value; //теперь к $sum хранящей сумму прибавляется текущее значение 
}


РНР выдавало предупреждение, что переменная $sum у вас не инициализирована, но это не является ошибкой, РНР будет использовать с первоначальным значением null.
Ответить с цитированием