Php 检查数组中的对象
我正在通过soap客户端和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) {
$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');