используя do..time, продолжить? - PullRequest
1 голос
/ 10 мая 2011
<?php
// initial value

$week = 50;
$year = 2001;
$store = array();
do
  {
  $week++;
  $result = "$week/$year";
  array_push($store,$result);
  if($week == 53){
    $week = 0;
    $year++;//increment year by 1
    }
    continue;
  }
// End of Loop
while ($result !== "2/2002");

?>

print_r($store);

результат желаемого возврата будет

array("51/2001", "52/2001", "01/2002", "02/2002");

Какие у меня проблемы при использовании do..time, продолжить?

Ответы [ 2 ]

5 голосов
/ 10 мая 2011
  • Ваши аргументы array_push неверны. Прочтите руководство по использованию функций, которые вы используете Включите предупреждения на вашем сервере; запуск это в кодовой панели сразу же показало мне проблему. [ Редактировать: Теперь вы спокойно исправили это в своем вопросе.]
  • У вас также есть опечатка: $i вместо $week.
  • Наконец, вы проверяете по «02/2002», но для этого месяца строка будет «2/2002».

Фиксированный код ( демоверсия ):

<?php
// initial value

$week = 50;
$year = 2001;
$store = array();
do
  {
  $week++;
  $result = "$week/$year";
  array_push($store, $result);
  if($week == 53){
    $week = 0;
    $year++;//increment year by 1
    }
    continue;
  }
// End of Loop
while ($result !== "2/2002");
?>

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

Вместо этого рассмотрите возможность сравнения $week и $year отдельно и численно:

while ($week < 2 && $year <= 2002)

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

0 голосов
/ 10 мая 2011

Возможно, я не правильно понимаю это ... Если бы вы могли объяснить немного больше, это помогло бы.

Попробуйте превратить цикл в функцию и поверните while (..), чтобы проверить переменную функций.

, затем просто вызовите его 4 раза, чтобы заполнить ваш массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...