За последние 24 часа нас посетили 22570 программистов и 1149 роботов. Сейчас ищут 632 программиста ...

Вставка ключа массива

Тема в разделе "PHP для новичков", создана пользователем IvanKut, 7 июл 2020.

  1. IvanKut

    IvanKut Активный пользователь

    С нами с:
    27 июл 2018
    Сообщения:
    258
    Симпатии:
    0
    Приветствую
    Я обсчитываю массив данных и формирую массив $total со значениями типа так
    Код (Text):
    1. $t['amount']['income']+=$r['amount'];
    Но если ключа [amount][income] нет - то выкидывается нотис:(

    Приходиться делать избыточный код
    Код (Text):
    1. if(empty($t['amount']['income'])) $t['amount']['income']=$r['amount'];
    2.         else $t['amount']['income']+=$r['amount'];
    Я подумал, сделаю я функцию, которая проверяет если такого ключа нет - то создает его.
    $t - исходный массив. $key передаю через string 'amount[income]=0'
    Код (Text):
    1. function ar($t, $key){
    2.     parse_str($key, $k);  
    3.     if(empty($t[$k])) $t[$k]=0;
    4.     return $t;
    5. }
    parse_str возвращает массив
    Код (Text):
    1. Array
    2. (
    3.     [amount] => Array  
    4.    (
    5.             [income] =>0
    6.     )
    7. )
    Но тут я завис, а как массив возвращаемый parse_str проверить, есть ли он в исходном массиве $t(если empty вставить)

    Вероятно я вообще не оптимальным вариантом двигаюсь, посоветуйте как лучше быть?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ну если нормальная версия php (> 7), то можно так
    PHP:
    1. $t['amount']['income'] = ($t['amount']['income'] ?? 0) + $r['amount'];
     
  3. IvanKut

    IvanKut Активный пользователь

    С нами с:
    27 июл 2018
    Сообщения:
    258
    Симпатии:
    0
    @mkramer да 7.4
    Вопрос, а где прочитать про ?? - что это значит? Какие то новые операторы?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

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