Php 检查数组中的对象

Php 检查数组中的对象,php,Php,我正在通过soap客户端和PHP查询一个数据库,该数据库返回以下输出: $response = $client->executeSQLQuery(array("sql"=>$sql)); object(stdClass)#2 (1) { ["return"]=> object(stdClass)#3 (1) { ["row"]=> array(276) { [0]=> object(stdClass)#4 (4) {

我正在通过soap客户端和PHP查询一个数据库,该数据库返回以下输出:

$response = $client->executeSQLQuery(array("sql"=>$sql));

object(stdClass)#2 (1) {
  ["return"]=>
  object(stdClass)#3 (1) {
    ["row"]=>
    array(276) {
      [0]=>
      object(stdClass)#4 (4) {
        ["applicationuser"]=>
        string(7) "rmjtapi"
        ["device"]=>
        string(15) "SEP111111111111"
        ["devicedescription"]=>
        string(27) "User 1"
        ["permissiongroup"]=>
        string(20) "Standard CTI Enabled"
      }
      [1]=>
      object(stdClass)#5 (4) {
        ["applicationuser"]=>
        string(7) "rmjtapi"
        ["device"]=>
        string(15) "SEP222222222222"
        ["devicedescription"]=>
        string(13) "User 2"
        ["permissiongroup"]=>
        string(20) "Standard CTI Enabled"
      }
我想验证阵列中是否存在设备SEP1111111。看起来我可以使用in_数组函数来实现这一点,但我无法让它工作

if (in_array("SEP111111111111", $response)))
        {
        echo "True";
        }
有人能给我指一下正确的方向吗?

试试这个:

$primary_array = $response->return->row;
foreach($primary_array as $a){
    if($a->device == 'SEP111111111111'){
        echo "true";
    }
}

这里有一个通用函数,您可以使用它来完成此任务。请注意,
isset()
检查非常重要,因为在尝试使用响应数据的值之前,您几乎应该始终验证其结构

function deviceIdExistsInResponse(\stdClass $response, $deviceIdToSeek) {
    if (!isset($response->return->row)) {
        return false;
    }

    foreach ($response->return->row as $row) {
        if (isset($row->device) && $row->device == $deviceIdToSeek) {
            return true;
        }
    }
    return false;
}

// Usage:
$deviceIdToSeek           = 'SEP111111111111';
$deviceIdExistsInResponse = deviceIdExistsInResponse($response, deviceIdToSeek);
echo $deviceIdToSeek . ' ' . ($deviceIdExistsInResponse ? 'located' : 'not found');

在嵌套属性上使用
array\u column()
,然后在\u array()中使用
谢谢,每种方法都有效。非常感谢你的帮助。
function deviceIdExistsInResponse(\stdClass $response, $deviceIdToSeek) {
    if (!isset($response->return->row)) {
        return false;
    }

    foreach ($response->return->row as $row) {
        if (isset($row->device) && $row->device == $deviceIdToSeek) {
            return true;
        }
    }
    return false;
}

// Usage:
$deviceIdToSeek           = 'SEP111111111111';
$deviceIdExistsInResponse = deviceIdExistsInResponse($response, deviceIdToSeek);
echo $deviceIdToSeek . ' ' . ($deviceIdExistsInResponse ? 'located' : 'not found');