Упростить код php

89
13 апреля 2021, 22:40

Есть такой массив

$names = array('aHeight', 'aWidth', 'aLength', 'aMaterial', 'aModel', 'aColor', 'aWeight', 'aThickness', 'aQntShelv', 'aType', 'aSeries', 'aBrand');

И такой

$json_data = array (
      'sd_cat_id' => isset($sd_cat_id) ? $sd_cat_id : '',
      'param_array' =>  $this->request->post,
      'aHeight' => isset($aHeight) ? array_unique($aHeight) : '',
      'aWidth' => isset($aWidth) ? array_unique($aWidth) : '',
      'aLength' => isset($aLength) ? array_unique($aLength) : '',
      'aMaterial' => isset($aMaterial) ? array_unique($aMaterial) : '',
      'aModel' => isset($aModel) ? array_unique($aModel) : '',
      'aColor' => isset($aColor) ? array_unique($aColor) : '',
      'aWeight' => isset($aWeight) ? array_unique($aWeight) : '',
      'aThickness' => isset($aThickness) ? array_unique($aThickness) : '',
      'aType' => isset($aType) ? array_unique($aType) : '',
      'aSeries' => isset($aSeries) ? array_unique($aSeries) : '',
      'aBrand' => isset($aBrand) ? array_unique($aBrand) : '',
      'aQntShelv' => isset($aQntShelv) ? array_unique($aQntShelv) : ''
  );

Можно ли как-то упростить добавление параметров, что бы не прописывать вручную каждое значение, а через цикл например. Пробовал делать так

$json_data = array (
      'sd_cat_id' => isset($sd_cat_id) ? $sd_cat_id : '',
      'param_array' =>  $this->request->post

);

foreach($names as $name) {
    if(isset($$name)) {
        $json_data[$$name] = array_unique($$name);
    } else {
        $json_data[$$name] = '';
    }

Но выдает ошибку Illegal offset type Как можно упростить данный код ?

Answer 1

Вам не нужна переменная переменной при обращении к массиву $json_data ($json_data[$$name]), т.к. $name уже содержит проверяемый ключ массива.

Так что как-то так:

foreach($names as $name) {
    if(isset($$name)) {
        $json_data[$name] = array_unique($$name);
    } else {
        $json_data[$name] = '';
    }
}
READ ALSO
Kohana Auth не работает login

Kohana Auth не работает login

Зарегистрировал пользователя, проверил в phpMyAdmin, он существуетПри попытке логина выдает ошибку, хотел бы узнать, что именно не так

126
вырезать из строки php

вырезать из строки php

как можно вырезать подстроку с конца до первого пробела, если адрес постоянно меняется

113
Подсчёт в масиве php

Подсчёт в масиве php

Прошу помощи, мозг кипитЕсть масив с маршрутом и промежуточными остановками [napravlenie] А в нем еще масивы с пунтом отправления [ot] пунтом прибытия...

108
Как перевести сайт с помощью cookies?

Как перевести сайт с помощью cookies?

Планируем переводить сайт на англверсию

111