Isset возвращает неопределенный индекс, хотя он установлен - PullRequest
0 голосов
/ 08 мая 2018

У меня странная проблема. Я вызываю самописную функцию, которая возвращает мой результат SQL.

$isBusinessAddress = PartnernetShop::invoiceAddressIsBusinessAddress($userID)->toArray();

Я хочу получить meta_value первого массива, потому что это возвращаемое значение, которое мне нужно. Из соображений безопасности я проверяю, выходит ли индекс и значение:

if(isset($isBusinessAddress[0]["meta_value"])){ ... }

Это если оператор возвращает:

Неопределенный индекс: meta_value

Однако, если я проверю значение только на 2-3 строки выше, оно будет работать!

var_dump($isBusinessAddress);
var_dump(isset($isBusinessAddress[0]["meta_value"]));
var_dump(array_key_exists("meta_value", $isBusinessAddress[0]));
var_dump($isBusinessAddress[0]["meta_value"]);

Выход:

array(1) {
  [0]=>
  array(2) {
    ["user_id"]=>
    int(12)
    ["meta_value"]=>
    string(4) "Nein"
  }
}
bool(true)
bool(true)
string(4) "Nein"

Это мой код:

$isBusinessAddress = PartnernetShop::invoiceAddressIsBusinessAddress($userID)->toArray();

var_dump($isBusinessAddress);
var_dump(isset($isBusinessAddress[0]["meta_value"]));
var_dump(array_key_exists("meta_value", $isBusinessAddress[0]));
var_dump($isBusinessAddress[0]["meta_value"]);
//die();

if(isset($isBusinessAddress[0]["meta_value"])){
    $isBusinessAddress = [0]["meta_value"];
}else{
    $isBusinessAddress = "NotSet";
}

Не могли бы вы, ребята, сказать мне, что я делаю не так? Я использовал это, если заявление уже несколько раз ...

UPDATE: Индекс определенно существует, потому что я передаю оператор if. Я просто получаю сообщение "Undefined index: meta_value" в строке, пытающейся присвоить значение переменной! Следующая строка:

$isBusinessAddress = [0]["meta_value"];

С уважением и спасибо!

1 Ответ

0 голосов
/ 08 мая 2018

Проблема не в isset (), а в следующей строке:

$isBusinessAddress = [0]["meta_value"];

, который пытается получить ключ meta_value из массива [0] (соответственно array(0 => 0)), где этот ключ не существует.

...