McLotos
25.02.2015 - 11:47
Добрый день.
Имеем массив из трех элементов
$modules=array('m1','m2','m3');
for ($i=0;$i<=count($modules); $i++)
{
$_MOD_INC = DIR_MODULES . $modules[$i] . DIRECTORY_SEPARATOR . $modules[$i] . '.before' . INC_EXTENSION;
if(is_file($_MOD_INC))
{
require $_MOD_INC;
}
}
После работы цикла оказывается что их было 2.
Что я упустил?
Пробовал вариант $i<count и $i<=count
Результат одинаковый
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
25.02.2015 - 11:56
Попробовал через foreach, он показывает все 3.
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
$modules[0]
$modules[1]
$modules[2]
$modules[3] ?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
McLotos
25.02.2015 - 11:58
$modules[0]
$modules[1]
$modules[2]
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
25.02.2015 - 11:59
Может быть из-за того что в каком-то другом скрипте в for тоже используется $i в качестве счетчика?
Хотя по идее я же тут его обнуляю
Очень не хочется перечитывать стотыщмильонов строк кода =(
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
$modules=array('m1','m2','m3');
for ($i=0;$i<=count($modules); $i++)
{
if(isset($modules[$i]))echo $i.'. Ok<br>';
else echo $i.'. No<br>';
}
0. Ok
1. Ok
2. Ok
3. No
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
McLotos
25.02.2015 - 12:04
GET
Логично. Но почему в моем случае выводится только 2 элемента?
Я так подозреваю что все-таки из-за того что где-то используется $i в качестве счетчика и эти циклы каким-то образом пересекаются. Надо проверить подключаемые файлы, может в каком-то из них тоже есть for($i;...)
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
$i=550;
$modules=array('m1','m2','m3');
for ($i=0;$i<=count($modules); $i++)
{
if(isset($modules[$i]))echo $i.'. Ok<br>';
else echo $i.'. No<br>';
}
:)
$i<
=count($modules);//
Подозреваю что 1 из 3 элементов не выводится, потому, что файла нет или он по другому называется, может русскую букву поставил в названии?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
McLotos
25.02.2015 - 12:16
Нет, как я и думал, оказывается что во втором файле (m2) тоже есть цикл for со счетчиком $i
Вот и получается что когда я тут его require у меня меняется значение счетчика на количество проходов внутри подключенного скрипта, естественно что внешний скрипт думает что проходов получилось больше чем задано.
И как теперь с этим бороться?
Пёс его знает в каком из очередных модулей может всплыть такой прикол.
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Разные переменные для счетчиков задай.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата |
оказывается что во втором файле (m2) тоже есть цикл for со счетчиком $i |
Вот она PHP логика,
бессердечная она с*ка с ней не поспоришь.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
bestxp
25.02.2015 - 13:23
ну а что ты хотел)
все верно работает) используй нормальные названия переменных тогда)
Уже третий человек на форуме у кого php бракованный :D . Задолбали козлы! Подсунут черт знает что на php.net, а потом страдай из-за этого :lol: .
Но хорошо что foreach не глючит! Им тоже можно пользоваться :D
По делу B) :
$modules = ['m1','m2','m3'];
for ( $modules_index=0; $modules_index < count($modules); $modules_index++ )
{
$_MOD_INC = DIR_MODULES . $modules[ $modules_index ] . DIRECTORY_SEPARATOR . $modules[ $modules_index ] . '.before' . INC_EXTENSION;
if(is_file($_MOD_INC))
{
require $_MOD_INC;
}
}
or
$modules = ['m1','m2','m3'];
foreach ( $modules as $module )
{
$_MOD_INC = DIR_MODULES . $module . DIRECTORY_SEPARATOR . $module . '.before' . INC_EXTENSION;
if(is_file($_MOD_INC))
{
require $_MOD_INC;
}
}
Какая здесь необходимость в цикле с параметром?
_____________
Трус не играет в хокей
Цитата (McLotos @ 25.02.2015 - 10:47) |
Что я упустил? |
var_dump($modules) приложить
код в первом сообщении кабочий
Скрытый текст |
$modules=array('m1','m2','m3'); for ($i=0;$i<=count($modules); $i++) { $_MOD_INC = $modules[$i] . DIRECTORY_SEPARATOR . $modules[$i] . '.before'; echo $_MOD_INC, PHP_EOL; } /* m1/m1.before m2/m2.before m3/m3.before /.before */
|
_____________
VPS от 5$, первые 2 месяца -
бесплатно.
McLotos
25.02.2015 - 15:05
Просто у меня планируется что таких модулей будет много. А букв в буржуйском алфавите всего 26, а писать длинные названия тупо для iterator'а и лень и запутаться можно. =))))
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.