Search code examples
phparraysvalidationundefinedisset

How can I validate an undefined index?


This is my code:

$fields = $bool === true ? $data[$value->uuid] : $data[$value->getUuid()];

in case "$value->uuid" oder "$value->uuid" is not an index of $data, I get an error message:

Notice: Undefined index: 123

So I tried to make a validaton:

$fields = "";

      if(isset($data[$value->uuid])) {
        $fields = $data[$value->uuid];
      }
      if(isset($data[$value->getUuid()])) {
        $fields = $data[$value->getUuid()];
      }

But still I get the same error message.


Solution

  • You need also check if $value has properties:

    if(isset($value->uuid) && isset($data[$value->uuid])) {
        $fields = $data[$value->uuid];
    }
    
    if(isset($value->getUuid()) && isset($data[$value->getUuid()])) {
        $fields = $data[$value->getUuid()];
    }
    

    First isset() checks property, second - index from $data array. Example

    EDIT

    Your condition would looks like:

    //$fields = $bool === true ? $data[$value->uuid] : $data[$value->getUuid()];
    
    $uuid = '';
    $uuid_fn = '';
    
    if(isset($value->uuid) && isset($data[$value->uuid])) {
        $uuid = $data[$value->uuid];
    }
    
    if(isset($value->getUuid()) && isset($data[$value->getUuid()])) {
        $uuid_fn = $data[$value->getUuid()];
    }
    
    $fields = $bool === true ? $uuid : $uuid_fn;