检查对象数组中是否存在值

检查对象数组中是否存在值

问题描述:

I am working on an API which receives a PHP object of $POST data. I am trying to check wether the 'smsPhoneNumber' inside customFields exists but not sure how to do this.

I am currently able to check for 'email' using:

if ( property_exists( $data, 'email' ) ) {
  return true;
}

Question: How to check if 'smsPhoneNumber' exists?

--

var_dump:

object(stdClass)[1515]
  public 'email' => string 'email@email.com'
  public 'customFields' => 
    array (size=2)
      0 => 
        object(stdClass)[1512]
          public 'name' => string 'Firstname'
          public 'value' => string 'james' 
      1 => 
        object(stdClass)[1514]
          public 'name' => string 'smsPhoneNumber'
          public 'value' => string '077'

You could use an array_filter to get the custom field you want.

$phoneFields = array_filter($data->customFields, function($field) {
    return $field->name === 'smsPhoneNumber';
});

This will only return objects in the array that have a name property equal to smsPhoneNumber.

if (!count($phoneFields)) {
    // Phone not found
}

// or

if ($phone = current($phoneFields)) {
    echo "The first phone number found is " . $phone->value;
}