2015-12-10 30 views
2

我通过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" 
     } 

我想验证一个设备,SEP111111111111,存在于数组中。它看起来像我可以使用in_array函数来做到这一点,但我不能得到它的工作;

if (in_array("SEP111111111111", $response))) 
     { 
     echo "True"; 
     } 

有人能指出我在正确的方向吗?

+0

在嵌套属性上使用'array_column()',然后使用'in_array()' – Rizier123

回答

1
foreach ($response->return->row as $value) { 
    if ($value->device === 'SEP111111111111') { 
     echo 'True'; 
     break; 
    } 
} 
1

试试我们这个:

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

谢谢各位。非常感谢帮助。 – Kimomaru

1

这里是你可以用它来做到这一点的一般功能。请注意,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');