За последние 24 часа нас посетили 124945 программистов и 6586 роботов. Сейчас ищут 1694 программиста ...

Переменная в имени переменой

Тема в разделе "PHP для новичков", создана пользователем aliensgroup, 11 янв 2023.

Метки:
  1. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Есть массив переменных
    $value[' dl '],
    $value[' ru '],
    $value[' eu '], имеются ещё значения более ранние
    $value[' old_dl ']
    $value[' old_ru '],
    $value[' old_eu '],
    и
    Ещё есть три после вычитания
    PHP:
    1. $value[' dif_eu'] =$value[' eu '] - $value[' old_eu '];
    2. $value[' dif_ru'] =$value[' ru '] - $value[' old_ru '];
    3. $value[' dif_dl'] =$value[' dl '] - $value[' old_dl '];
    а ещё на каждую переменную есть одинаковые условия на отрицательное либо положительное... В общем получается очень много похожего кода отличающего только dl, eu, ru можно ли устроить какой нибудь цикл только по трем этим именам? Чтоб не писать три строчки, а только одну с переменой из цикла (i) как то так видеть строчку
    PHP:
    1. $value[' dif_(i)'] =$value[' (i) '] - $value[' old_(i) '];
     
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    можно.
     
  3. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Можно !? В плане я правильный синтаксис оформил в строчке указывая на переменную цикла (i)
    PHP:
    1. $value[' dif_(i)'] =$value[' (i) '] - $value[' old_(i) '];
     
  4. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Решено. Кажется понял ориентировочно правильный синтаксис скорее будет
    PHP:
    1. $value['dif_'$i] =$value[$i] - $value['old_'$i];
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    предположительно, надо хотя бы минимально синтаксис php знать.. хотя бы в части работы со строками
    PHP:
    1. $value["dif_$i"] = $value[$i] - $value["old_$i"];
    но когда такая байда.... куча куч переменных и почти все одинаковые - есть повод задуматься... - а правильно ли вы все делаете?
     
  6. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    Конечно можно:
    PHP:
    1. <?php
    2. $arr_assoc = [
    3.   "dif_dl" => "Петя",
    4.   "dif_ru" => "Вася",
    5.   "dif_eu" => "Катя"
    6. ];
    7. $x = ["dl", "ru", "eu"];
    8. foreach ($x as $value) {
    9.   echo $arr_assoc["dif_{$value}"];
    10.   echo "<hr>";
    11. }
    Не, неправильно, вариантов несколько, один из них выше. И даже если бы было правильно, у тебя бы выходило что-то такое:
    PHP:
    1. $value[' dif_0'] =$value[' 0'] - $value[' old_0 '];
    2. $value[' dif_1] =$value[' 1] - $value[' old_1 '];
    3. $value[' dif_2'] =$value[' 2'] - $value[' old_2 '];
    Не стоит использовать переменную $i где-то вне цикла for.
     
    #6 dantemgs, 11 янв 2023
    Последнее редактирование: 11 янв 2023
  7. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    У меня в return одна переменная массива $value а далее в twig я ее расшариваю в курсах валют : {{ value.ru }} текущий ,
    {{ value.vec_ru }} стрелка верх или вниз,
    {{ value.dif_ru }} насколько изменился курс от вчерашней даты. Да и в плане валют их может и больше.
     
    #7 aliensgroup, 11 янв 2023
    Последнее редактирование: 11 янв 2023
  8. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    Прям совсем твой кусочек:
    PHP:
    1. $x = ["dl", "ru", "eu"];
    2. foreach ($x as $item) {
    3.   $value["dif_$item"] = $value[$item] - $value["old_$item"];
    4. }
     
    aliensgroup нравится это.
  9. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Вот эту лаконичность ☝️ я искал, как я мало знаю
     
  10. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    из-за таких, как ты, сюда суются такие, как ТС, таков стрём
    у ТС-а нет базовых понятний, которые дают в школе, а ты, вместо того, чтобы подвести к решению, даёшь решение
     
  11. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Он дал не просто лаконичное решение, а целый задел лаконичности, к примеру обращение к базам данных где часто одни и те же запросы с измененой частью переменной. Базовых хватает , но они ведут к тонне дублирующего кода. Чего только стоил парсинг первых ответов Гугл Войс... Чтоб получить чистую фразу - 10 строчек кода, но нормальный человек показал еллегантный regex одной строчкой, и дал понять: что запись может быть красива и функциональна! И ради таких люди заходят на форумы, я же не просил переписать 300 строчек своего говнокода, а попросил кусочек скорректировать, далее я сам ручками, благо имеется опыт и с php, as2, c# ИМХО, прошу прощения за холивар
     
    #11 aliensgroup, 11 янв 2023
    Последнее редактирование: 11 янв 2023
  12. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    тогда бы и сам разобрался, коли умеешь в иные языки
    холивара нет никакого
     
    aliensgroup нравится это.
  13. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Я мега ленив на гугльние , форумы быстрее и как правило точнее
     
  14. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    свои бизнес-проблемы решаются либо опытом, либо поиском по споряжённым задачам
     
    aliensgroup нравится это.
  15. aliensgroup

    aliensgroup Новичок

    С нами с:
    28 май 2022
    Сообщения:
    33
    Симпатии:
    0
    Пока это хобби у меня, за 20 лет только было два заказа, я зарабатываю на дизайне
     
  16. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    рад, что @dantemgs закрыл твою проблему, он мне пояснил, что давая решение он поискал решение, ибо сам недостаточно глубоко шарит язык и исследует его
    я признаю ошибки, @dantemgs, извини ещё раз
     
    dantemgs и aliensgroup нравится это.