Хотя я использую isset, я получаю неопределенную ошибку индекса - PullRequest
0 голосов
/ 27 февраля 2019

Я знаю, это требует слишком много времени.Но функция isset не решает мою проблему.

$get = (isset($this->settings[$set['id']])) ? $this->settings[$set['id']] : '';

Примечание: неопределенный индекс: id в \ public_html \ settings.php в строке 419

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Может быть, $set['id'] нужно проверить, вот так:

$set_ = isset($set['id']) ? $set['id'] : '';
$value = isset($this->settings[$set_]) ? $this->settings[$set['id']] : '';
0 голосов
/ 28 февраля 2019

Я бы просто добавил его к вызову isset

$get = isset( $set['id'],$this->settings[$set['id']]) ? $this->settings[$set['id']] : '';

Вы можете использовать несколько аргументов в isset.Это примерно эквивалентно выполнению этого:

$get = isset($set['id']) && isset($this->settings[$set['id']]) ? $this->settings[$set['id']] : '';

Это можно легко проверить с помощью этого кода:

$array = ['foo' => 'bar'];
$set = []; //not set
#$set = ['id' => 'foo']; //uncomment to test if set


#using [] to add an element to a string not an array
$get = isset($set['id'],$array[$set['id']]) ? $array[$set['id']] : '';

echo $get;

Когда $set = ['id' => 'foo'], вывод будет bar, если вы оставите комментарийтогда на выходе получается пустая строка.

Песочница

0 голосов
/ 27 февраля 2019

Попробуйте проверить, установлена ​​ли переменная, прежде чем использовать ее в качестве аргумента.

$get = isset( $set['id']) ? $this->settings[$set['id']] : '';
...