Php создать переменную в цикле

Php создать переменную в цикле thumbnail

Всем привет

Подскажите как создать переменную класса в цикле?

Т.е например имеем

<?php class FormCompany extends Model { public $1_id, $2_id, $3_id; } ?>

Как эти переменные можно создать в цикле?

Если пробую в __construct указать $this->1_id = 111; тогда ругается, что нет такой переменной

Цикл в самом классе (после class сразу же) делать тоже нельзя

Как просто создать переменную (вне класса) – все понятно и вопросов нет, а в классе никак не пойму как их динамически объявить (

В общем смысл вопроса – как создать эти три переменные (объявить их и присвоить значение) в цикле

Спасибо за ответы

P.S

В общем выяснилось, что проблемма с YII2

На самом PHP (чистом) все создается вполне нормально

<?php error_reporting(E_ALL); ini_set(‘display_error’, 1); class FormCompany { public __construct() { $this->{‘7_id’} = 111; echo ‘val: ‘ . $this->7_id; } } $test = new FormCompany(); ?>

Если используется YII2, тогда только решение ниже

Хотя как мне кажется, оно тоже не совсем красивое…

  • Вопрос задан более трёх лет назад
  • 1659 просмотров

PHP не запрещает делать так, но у YII свои заморочки, и чертики в голове.

Можно (но не стоит) так:

class FormCompany extends Model { public $; public __construct(){ $this-> = (object)[]; for($i = 1; $i < 10; $i++){ $this->->{‘var’ . $i} = rand(0, 10); } } }

Решение довольно громоздское (для Yii2), но переназначение стандартных сеттеров и геттеров – единственное решение.

private $_attributes = [‘test’ => null]; //объвляем приватную переменную где будем объявлять без особых проблем переменные, и хранить их данные public __get($name){ if (array_key_exists($name, $this->_attributes)) //если переменная объявлена в нашем магическом массиве – выводим его значение return $this->_attributes[$name]; return parent::__get($name); //либо стандартное } public __set($name, $value){ if (array_key_exists($name, $this->_attributes)) //аналог __get, только устанавливаем значение $this->_attributes[$name] = $value; else parent::__set($name, $value); //ну дефолтная установка значения } public __construct(){ parent::__construct(); //обязательно для Yii2, да и вообще в ООП при переназначении функций $this->__set(‘test’, ‘test’); // устанавливаем значение test $this->_attributes[‘newAttr’] = null; // объявляем новое значение $this->__set(‘newAttr’, ‘test value’); // и устанавливаем его значение $this->_attributes[‘newAttr’] = ‘test value’; // хотя можно и так, как вам удобнее }

Если не хотите захламлять код – опять же попробуйте впихнуть все это в хелпер, и через use подключить в модели.

Из view получаем как обычный параметр (к примеру Yii::$app->user->identity->test)

Из класса через $this->__get(‘test’)

Удачи!

Пригласить эксперта

Если пробую в __construct указать $this->1_id = 111; тогда ругается, что нет такой переменной

Вопрос не к PHP, а к вашему конкретному классу Model (видимо, какого-то фреймворка).

PHP позволяет в любой момент и из любого места добавить любое новое свойство объекту.

class FormCompany extends Model { public $1_id = null; public __construct() { $this->1_id = 111; } public some() { _r($this->1_id); } }

Какое сложное решение вы отметили….

public attributes() { return array_merge(parent::attributes(), [ ‘test1’, ‘test2’ ]); }

24 мая 2021, в 00:08

1500 руб./в час

23 мая 2021, в 23:15

1500 руб./в час

23 мая 2021, в 23:04

600 руб./за проект

Источник

Циклы используются для того, чтобы некоторый участок кода выполнился несколько раз подряд.

Зачем это нужно – представьте, что вам нужно возвести в квадрат 100 элементов массива. Если обращаться к каждому элементу отдельно по его ключу – это займет 100 строчек кода, и для того, чтобы написать этот код, нужно будет потратить довольно много времени.

Но это не нужно – у нас есть возможность сделать так, чтобы PHP выполнил за нас некоторую операцию нужное количество раз. Например, возвел все элементы массива в квадрат.

Делается это с помощью циклов.

Есть три вида циклов: foreach, while и for. Давайте разберемся, как с ними работать и чем они отличаются друг от друга.

Цикл foreach

Цикл foreach используется для прохождения по всем элементам массива.

Синтаксис такой: пишется ключевое слово foreach, а после него круглые скобки ( ). В этих скобках указывается переменная, в которой лежит массив, потом слово as, а после него – переменная, в которую при каждом проходе цикла будет ложится элемент массива.

К примеру, это может выглядеть так – foreach($arr as $elem), где $arr – это массив, а в переменную $elem будут ложиться элементы массива. Имя переменной $elem вы придумываете сами в момент создания цикла – какое придумаете, в ту переменную и будут попадать элементы массива.

После команды foreach() должны идти фигурные скобки {}. Код, который лежит в этих скобках, называется телом цикла.

Этот код будет выполняться столько раз, сколько проходов сделает цикл. А он сделает столько проходов, сколько элементов у нашего массива.

Итак, синтаксис цикла foreach выглядит так:

<?php foreach ($arr – имя_массива as $elem – переменная_для_элемента_массива) { /* Код, который находится между фигурными скобками будет повторяться столько раз, сколько элементов у массива. */ } ?>

Давайте решим следующую задачу: пусть дан массив $arr с пятью элементами, выведем столбец этих элементов с помощью цикла foreach.

Будем при каждом проходе цикла выводить на экран (с помощью echo) текущий элемент массива (тот, что лежит в переменной $elem), и ставить после него тег br, чтобы получался столбец элементов, а не строка:

<?php $arr = [1, 2, 3, 4, 5]; //этот массив дан foreach ($arr as $elem) /* Код, который находится между фигурными скобками будет повторяться столько раз, сколько элементов у массива (то есть 5 раз). */ { /* В переменной $elem будет лежать элемент массива, каждый раз разный: сначала первый, потом второй… Имя этой переменной обязательно должно отличаться от названия массива! */ echo $elem.'<br>’; /* При каждом проходе цикла на экран будет выводится элемент массива, получится столбец элементов нашего массива $arr = [1, 2, 3, 4, 5]; Этот столбец будет выглядеть так: 1 2 3 4 5 */ } ?>

Читайте также:  Стретчинг растяжка цикл передач канала живитв тренер ольга янчук 33 занятия

Цикл foreach – очень мощная и полезная вещь, его следует использовать в том случае, если вам необходимо выполнить какие-либо действия с каждым элементом массива по отдельности, например, возвести их в квадрат:

<?php //Возведем в квадрат каждый элемент следующего массива: $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { /* В переменной $elem будет лежать элемент массива, каждый раз разный: сначала 1, потом 2… */ echo $elem*$elem; } ?>

Циклом foreach можно пробегать не только по обычному массиву, но и по ассоциативному. В таком случае после as следует указать такую конструкцию: $ключ => $элемент. В переменной $ключ будут хранится ключи, а в переменной $элемент – соответствующие этим ключам элементы.

Чтобы посмотреть на практике, как работать с ключами, давайте сделаем следующее – при каждом проходе цикла будем выводить на экран ключ массива и соответствующий ему элемент через дефис:

<?php //Дан ассоциативный массив $arr: $arr = [‘a’=>1, ‘b’=>2, ‘c’=>3, ‘d’=>4, ‘e’=>5]; foreach ($arr as $key=>$elem) { /* В переменной $elem будут лежать элементы массива сначала ‘1, потом 2 и так далее, а в переменной $key будут лежать ключи массива сначала ‘a’, потом ‘b’ и так далее: */ echo $key.’-‘.$elem; //выведет: ‘a-1’, ‘b-2’, ‘c-3’ и так далее… } ?>

Если вам нужны только значения ассоциативного массива и не нужны ключи, то $ключ=> можно не писать:

<?php //Массив ассоциативный, но ключи нам не нужны: $arr = [‘a’=>1, ‘b’=>2, ‘c’=>3, ‘d’=>4, ‘e’=>5]; foreach ($arr as $elem) { echo $elem; //выведет: ‘1’, ‘2’, ‘3’ и так далее… } ?>

Фигурные скобки, так же, как и для if, можно не указывать – в этом случае цикл выполнит только одну строку под ним (это относится ко всем циклам, не только к foreach):

<?php $arr = [‘a’=>1, ‘b’=>2, ‘c’=>3, ‘d’=>4, ‘e’=>5]; foreach ($arr as $elem) echo $elem; //выведет: ‘1’, ‘2’, ‘3’ и так далее… echo ‘hello’; //выведется после цикла ?>

Цикл foreach имеет альтернативный синтаксис:

<?php //Фигурные скобки опущены, а цикл закрывается командой endforeach: $arr = [‘a’=>1, ‘b’=>2, ‘c’=>3, ‘d’=>4, ‘e’=>5]; foreach ($arr as $elem): //обратите внимание на двоеточие! echo $elem; //выведет: ‘1’, ‘2’, ‘3’ и так далее… endforeach; ?>

Как и в случае с конструкцией if-else, мы можем разорвать скобки PHP внутри цикла, далее написать что-то на HTML и опять открыть скобки PHP – в этом случае HTML код внутри цикла повторится столько раз, сколько проходов сделает цикл (в случае foreach – это количество элементов массива):

//Как работать с HTML (этого многие не знают, обратите внимание!): <?php $arr = [‘a’=>1, ‘b’=>2, ‘c’=>3, ‘d’=>4, ‘e’=>5]; foreach ($arr as $elem) { //HTML код внутри цикла повторится 5 раз: ?> <!– Мы закрыли скобки PHP и теперь пишем на HTML, но в цикле!–> <p> {<?php echo $elem; ?>} </p> <?php } ?> //Альтернативный синтаксис (удобен при работе с html, так как не нужны фигурные скобки): <?php $arr = [‘a’=>1, ‘b’=>2, ‘c’=>3, ‘d’=>4, ‘e’=>5]; foreach ($arr as $elem): //<— не забываем ставить двоеточие! ?> <p> {<?php echo $elem; ?>} </p> <?php endforeach; ?>

Цикл while

Цикл while будет выполняться до тех пор, пока верно (истинно) выражение, переданное ему параметром. Смотрите синтаксис:

<?php while ( пока выражение истинно ) { тут пишется код, который выполнится много раз; } /* В начале каждого прохода цикла PHP проверяет выражение в круглых скобках: если оно верно – выполняет следующий проход цикла, а если неверно – цикл завершает свою работу. То есть: цикл закончится, когда выражение перестанет быть истинным. Если оно было ложным изначально – то он не выполнится ни разу. */ //Как и для foreach есть альтернативный синтаксис: while ( пока выражение истинно ): тут пишется код, который выполнится много раз; endwhile; ?>

Давайте выведем с помощью цикла while столбец цифр от одного до пяти.

Для этого введем переменную $i, которую будем использовать для того, чтобы остановить наш цикл.

Как мы это сделаем: перед циклом поставим ей значение 1, а внутри цикла будем при каждом проходе цикла увеличивать ее на единицу. Сначала она будет 1, потом 2, потом 3 и так далее.

В условии окончания цикла поставим $i <= 5 – это значит, что пока $i будет меньше или равна пяти – цикл будет работать, а как только она станет 6 – цикл закончит свою работу.

Мы используем переменную $i, чтобы считать количество проходов цикла. Однако, можно также воспользоваться ей для вывода нужного нам столбца чисел от 1 до 5-ти.

Просто при каждом проходе цикла будем выводить содержимое $i и тег br (чтобы получился столбец). Так как $i каждый раз увеличивается на единицу, то сначала на экран выведется 1, потом 2 и так далее до 5-ти.

Итак, вот описанный мною код:

<?php $i = 1; //начальное значение переменной $i while ($i <= 5) { //цикл закончится, когда $i станет больше 5-ти /* Выводим значение переменной $i на экран при каждом проходе цикла: */ echo $i.'<br>’; /* С помощью оператора ++ увеличиваем $i на единицу при каждом проходе цикла: */ $i++; } ?>

Переменная $i, которую мы использовали, является так называемым счетчиком цикла. Счетчики используются для того, чтобы выполнить цикл нужное количество раз.

Кроме того, они выполняют вспомогательную роль – в нашей задаче мы использовали счетчик, чтобы вывести цифры от 1 до 5 (и при этом для того, чтобы остановить цикл после 5-ти проходов).

Для счетчиков принято использовать буквы i, j и k.

Бесконечный цикл

Обратите внимание на то, что цикл while может выполняться бесконечно (но это приведет к зависанию скрипта!), достаточно передать ему выражение, которое никогда не станет ложным. Например, так:

Читайте также:  Что такое синтаксис цикла for

<?php $var = true; while ($var === true) { /* Написанный здесь код будет выполняться ‘вечно’ (пока скрипт не будет остановлен принудительно). Не стоит это повторять – это приведет к зависанию сервера! */ } ?>

Вместо $var === true можно написать сокращенный вариант – просто $var (так же, как и сокращенный вариант для if):

<?php $var = true; while ($var) { /* Написанный здесь код будет выполняться ‘вечно’ (пока скрипт не будет остановлен принудительно). Не стоит это повторять – это приведет к зависанию сервера! */ } ?>

А можно вообще не вводить переменную $var, а в круглых скобках написать true:

<?php while (true) { /* Написанный здесь код будет выполняться ‘вечно’ (пока скрипт не будет остановлен принудительно). Не стоит это повторять – это приведет к зависанию сервера! */ } ?>

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

Посмотрите на следующий пример – в нем начальное значение $i равно 1, в цикле оно каждый раз увеличивается на единицу, то есть $i будет расти – сначала 1, потом 2, потом 3…

А условие окончания цикла такое: $i >= 1. То есть пока $i больше или равна 1 – цикл будет крутиться. В нашем случае это будет вечно (так как $i растет и никогда не станет меньше 1):

<?php $i = 1; while ($i >= 1) { /* Написанный здесь код будет выполняться ‘вечно’ (пока скрипт не будет остановлен принудительно). Не стоит это повторять – это приведет к зависанию сервера! */ $i++; } ?>

Цикл for

Цикл for является альтернативой while. Он более сложен для понимания, но чаще всего его любят больше, чем while, за то, что он занимает меньше строчек.

Его синтаксис выглядит так:

<?php for ( начальные команды; условие окончания цикла; команды после прохода цикла ) { тело цикла } ?>

Начальные команды – это то, что выполнится перед стартом цикла. Они выполнятся только один раз. Обычно там размещают начальные значения счетчиков, пример: $i = 0.

Условие окончания цикла – пока оно истинное, цикл будет работать, пример: $i .

Команды после прохода цикла – это команды, которые будут выполнятся каждый раз при окончании прохода цикла. Обычно там увеличивают счетчики, например: $i++.

Давайте выведем столбец чисел от 0 до 9 с помощью цикла for:

<?php /* В начале цикла $i будет равно нулю, цикл будет выполнятся пока $i < 10, после каждого прохода к $i прибавляется единица: */ for ($i = 0; $i < 10; $i++) { echo $i.'<br>’; //выведет 0, 1, 2… 9 } ?>

Цикл без тела

Напоминаю, что фигурные скобки в циклах можно не указывать – в этом случае цикл выполнит только одну строку под ним (не рекомендую так делать, часто приводит к ошибкам):

<?php for ($i = 0; $i < 10; $i++) //<— точки с запятой нет echo $i; //выведет 0, 1, 2… 9 ?>

А вот если после ) поставить точку с запятой – цикл закроется и следующая строка в него не попадет, получится так называемый цикл без тела, который в нашем случае просто прокрутится и в результате изменит значение переменной $i:

<?php for ($i = 0; $i < 10; $i++); //<— точка с запятой есть echo $i; //выведет 9 ?>

Такой цикл иногда используется, вы увидите примеры его применения при разборах задач на циклы.

Несколько команд в цикле for

Если нам необходимо выполнить несколько команд в круглых скобках – указываем их через запятую:

<?php for ($i = 0, $j = 2; $i

Давайте разберем приведенный цикл: до прохода цикла выполнятся две команды: $i = 0, $j = 2, а после каждой итерации – целых три: $i++, $j++, $i = $i + $j.

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

Инструкция break

Иногда нам необходимо прервать выполнение цикла досрочно, в случае с циклом foreach это значит до того, как цикл переберет все элементы массива.

Зачем такое может понадобится? Например, перед нами стоит задача выводить элементы массива до тех пор, пока не встретится число 3. Как только встретится – цикл должен завершить свою работу.

Такое можно сделать с помощью инструкции break – если выполнение цикла дойдет до нее, цикл закончит свою работу.

Давайте решим приведенную выше задачу – оборвем цикл, как только нам встретится число 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) break; //выходим из цикла else echo $elem; } ?>

Инструкция continue

Существует также инструкция continue, при достижении которой цикл начинает новую итерацию. Иногда может быть полезна для упрощения кода, хотя практически всегда задачу можно решить и без нее.

Что вам делать дальше:

Приступайте к решению задач по следующей ссылке: задачи к уроку.

Когда все решите – переходите к изучению новой темы.

Источник

  1. С нами с: 24 янв 2014 Сообщения: 356 Симпатии: 0

    Доброго дня. Подскажите плиз.

    На данный момент задаю переменные стандартно:

    Код (PHP):

    1. <span class=”syntaxdefault”>$tovn1 </span><span class=”syntaxkeyword”>=</span><span class=”syntaxdefault”> mysql_real_escape_string</span><span class=”syntaxkeyword”>(</span><span class=”syntaxdefault”>trim</span><span class=”syntaxkeyword”>(</span><span class=”syntaxdefault”>$tovn1</span><span class=”syntaxkeyword”>));<br /></span><span class=”syntaxdefault”>$tovn2 </span><span class=”syntaxkeyword”>=</span><span class=”syntaxdefault”> mysql_real_escape_string</span><span class=”syntaxkeyword”>(</span><span class=”syntaxdefault”>trim</span><span class=”syntaxkeyword”>(</span><span class=”syntaxdefault”>$tovn2</span><span class=”syntaxkeyword”>));</span><span class=”syntaxdefault”> <br /></span><span class=”syntax”>//— и так далее вплоть до…<br /></span><span class=”syntaxdefault”>$tovn100 </span><span class=”syntaxkeyword”>=</span><span class=”syntaxdefault”> mysql_real_escape_string</span><span class=”syntaxkeyword”>(</span><span class=”syntaxdefault”>trim</span><span class=”syntaxkeyword”>(</span><span class=”syntaxdefault”>$tovn100</span><span class=”syntaxkeyword”>));&nbsp;</span><span class=”syntaxdefault”></span>

    Пока их было с десяток не так сложно, но в новых функциях их уже под сотню.

    Попытался сделать через цикл:

    Код (PHP):

    1. <span class=”syntaxdefault”></span><span class=”syntaxkeyword”>for(</span><span class=”syntaxdefault”>$i</span><span class=”syntaxkeyword”>=</span><span class=”syntaxdefault”>1</span><span class=”syntaxkeyword”>;</span><span class=”syntaxdefault”>$i</span><span class=”syntaxkeyword”><=</span><span class=”syntaxdefault”>100</span><span class=”syntaxkeyword”>;</span><span class=”syntaxdefault”>$i</span><span class=”syntaxkeyword”>++)<br />{<br /></span><span class=”syntaxdefault”> </span><span class=”syntaxkeyword”>${</span><span class=”syntaxdefault”>tovn</span><span class=”syntaxkeyword”>}.</span><span class=”syntaxdefault”>$i </span><span class=”syntaxkeyword”>=</span><span class=”syntaxdefault”> mysql_real_escape_string</span><span class=”syntaxkeyword”>(</span><span class=”syntaxdefault”>trim</span><span class=”syntaxkeyword”>(${</span><span class=”syntaxdefault”>tovn</span><span class=”syntaxkeyword”>}.</span><span class=”syntaxdefault”>$i</span><span class=”syntaxkeyword”>));<br /></span><span class=”syntaxdefault”> </span><span class=”syntax”>//— вроде всё ок если к переменным обращаться тут внутри цикла<br /></span><span class=”syntaxkeyword”>}</span><span class=”syntaxdefault”> <br /></span><span class=”syntax”>//— но за пределами переменные остаются не заданными &nbsp;</span><span class=”syntaxdefault”></span>

    Собственно вопрос: Можно ли как то задавать переменные с помощью цикла, что бы они оставались заданными и за его пределами?

  2. [ БАН ]

  3. Команда форума Модератор

    С нами с: 20 июн 2012 Сообщения: 7.973 Симпатии: 1.579

    По идее, должно работать. Хотя мне кажется, что .$i тоже должно быть в скобках. Но вообще такой код писать – плохой тон. Лучше использовать нормальные массивы

  4. Команда форума Модератор

    С нами с: 11 июн 2010 Сообщения: 10.463 Симпатии: 1.062 Адрес: там-сям

    Нормальное решение – использовать плейсхолдеры: готовые из mysqli/PDO или в собственной реализации. Тогда не придется сотни раз делать одно и то же.

  5. С нами с: 24 янв 2014 Сообщения: 356 Симпатии: 0

    А собственно что не понятно?

    Ещё упростить?

    Код (PHP):

    1. $tovn1 = 1;

    2. $tovn2 = 2;

    3. //— и так далее вплоть до…

    4. $tovn100 = 100;

    5. //— задав таким образам я могу вывести

    6. echo $tovn23;

    7. //— допустим мне лень писать 100 строчек кода задавая 100 переменных $tovn

    8. //— и я хочу задать их через цикл

    9. for($i=1;$i<=100;$i++)

    10. {

    11. ${tovn}.$i = $i;

    12. //— тогда внутри цикла я могу обратится скажем к

    13. echo $tovn23;

    14. }

    15. //— но за пределами цикла переменная $tovn23 уже не заданна

    16. //— вот меня и интересует существует ли способ задавать переменные через цикл что бы не плодить лишние строчки кода?

  6. [ БАН ]

    это грубый и плохо читаемый код получится… советую отказаться от такого подхода и стиля..))

  7. Команда форума Модератор

    С нами с: 18 мар 2010 Сообщения: 32.419 Симпатии: 1.743

  8. С нами с: 24 янв 2014 Сообщения: 356 Симпатии: 0

    Дело в том что я пытаюсь получить данные из формы. А ячеек в ней туча:

    Код (PHP):

    1. $tovn1 = $_POST[‘tovn1’];

    2. //—и так далее что выходит почти 6 сотен строк когда я только задаю переменные

    3. //—работу с переменными я без проблем запихнул в цикл

    4. for($i=1;$i<=14;$i++)

    5. {

    6. if(empty(${‘tovs’.$i}) and !empty(${‘tovn’.$i})) $error .= “<li>Внимание! Автозамена! Сер. номер для “.$i.” товара</li>”;

    7. }

    Но меня напрягают 6 сотен строк. Вроде бы здравый смысл подсказывает что с помощью цикла их можно ужать до 6 строк. Но у меня не получается… Погуглил плейсхолдеры. Толи я не там читаю, но вроде они в моей задаче мне не помощники. Да и вообще это реально или я себе придумал проблему?

  9. Команда форума Модератор

    mysql_* – устаревшие функции.

    BaranPHP, какая у тебя задача?

  10. С нами с: 24 янв 2014 Сообщения: 356 Симпатии: 0

    Да ты не меняешься. В чём совет понятно только тебе, и узкому кругу посвящённых.)

  11. Команда форума Модератор

  12. С нами с: 24 янв 2014 Сообщения: 356 Симпатии: 0

    Пошутил?

    То что данные можно упаковать сразу в массив я и так понимаю и тянуть потом из массива $tovn[23]. Но такое решение повлечёт за собой то что мне надо будет переписать кучу кода. Поэтому и интересует возможно ли вообще то о чём я спросил.

  13. Команда форума Модератор

    С нами с: 11 июн 2010 Сообщения: 10.463 Симпатии: 1.062 Адрес: там-сям

  14. Команда форума Модератор

    Ты видимо плохо объяснил или сам не знаешь что хочешь.

    Ты можешь объявить переменную до цикла и записать в цикле в неё данные, после чего использовать данные после цикла.

  15. Команда форума Модератор

    С нами с: 20 июн 2012 Сообщения: 7.973 Симпатии: 1.579

    Код (PHP):

    1. <?php

    2. for ($i = 1; $i < 100; $i++) {

    3. ${“town$i”} = $i;

    4. }

    5. echo $town99;

    6. ?>

    Всего-то почитать документацию… Но ещё раз повторяю – это очень плохой стиль программирования, просто ужасный. Вообще, я не понимаю, зачем в языке есть такая возможность. Понимаю ещё хранить в строках имена классов или функций, и сам часто пользуюсь такой возможностью, но вот так формировать переменные – не понимаю, и не пользуюсь, и не рекомендую.

  16. С нами с: 24 янв 2014 Сообщения: 356 Симпатии: 0

    Ну вот спасибо. То что я и искал. Не знаю почему стиль плохой, работает же да и очень удобно в моём случае.

  17. Команда форума Модератор

    С нами с: 20 июн 2012 Сообщения: 7.973 Симпатии: 1.579

    Плохой стиль, потому что слишком многое происходит неявно, не очевидно, какая связь между всеми этими переменными. Ну и ни к чему плодить 100 переменных, когда можно обойтись одной. Так куда понятнее:

    Код (Text):

    1. $town = array ();

    2. for ($i = 1; $i < 100; $i++) {

    3. $town[$i] = $i;

    4. }

    5. echo $town[99];

    На будущее, если у вас для более чем одной переменной оправдано одинаковое имя, значит надо заводить массив.

  18. С нами с: 24 янв 2014 Сообщения: 356 Симпатии: 0

    Да, спасибо ещё раз. Про массивы я в курсе. Но в данном случае мне надо внести 20 новых бланков уже в готовую работу. А переделывать всё код под массивы нет ни времени не желания. Никакдабы не подумал что дело в грамматике так что ещё раз спасибо.

  19. Команда форума Модератор

    С нами с: 11 июн 2010 Сообщения: 10.463 Симпатии: 1.062 Адрес: там-сям

    Улучшать код это правильно. Втыкать “костыли”, когда уже знаешь верное решение, странно.

Источник

Читайте также:  Файлы cmd цикл for