php数组使用in_数组不起作用
嗨,我有一个对象数组($perms\u found),如下所示:php数组使用in_数组不起作用,php,arrays,Php,Arrays,嗨,我有一个对象数组($perms\u found),如下所示: Array ( [0] => stdClass Object ( [permissions_id] => 1 ) [1] => stdClass Object ( [permissions_id] => 2 ) [2] => stdClass Object ( [permissions_id] =>
Array
(
[0] => stdClass Object
(
[permissions_id] => 1
)
[1] => stdClass Object
(
[permissions_id] => 2
)
[2] => stdClass Object
(
[permissions_id] => 3
)
)
我想在\u数组中查找任何权限\u id,我尝试了以下方法:
var_dump(in_array(1, $perms_found , true));
但我一直得到:
布尔(假)
我做错了什么请帮助?首先转换为数组
function objectToArray($object) {
if (!is_object($object) && !is_array($object)) {
return $object;
}
if (is_object($object)) {
$object = get_object_vars($object);
}
return array_map('objectToArray', $object);
}
_array()中的
将检查给定数组中是否存在元素(在本例中为1
)
很可能您有这样一个数组:
$perms_found = array(
(object)array('permissions_id' => 1),
(object)array('permissions_id' => 2),
(object)array('permissions_id' => 3)
);
因此,您有一个包含3个元素的数组,其中没有一个是数值1
,它们都是对象。在这种情况下,不能在数组()中使用
如果要检查这些对象的权限\u id
,则必须编写自己的例程
function is_permission_id_in_set($perm_set, $perm_id)
{
foreach ($perm_set as $perm_obj)
if ($perm_obj->permission_id == $perm_id)
return true;
return false;
}
var_dump(is_permission_id_in_set($perms_found, 1));
in_array
正在数组中查找1
,但您的数组包含对象,而不是数字。使用访问对象属性的循环:
$found = false;
foreach ($perms_found as $perm) {
if ($perm->permissions_id == 1) {
$found = true;
break;
}
}
数组是对象的集合,您正在检查该数组中是否有整数。您应该首先使用数组映射函数
$mapped_array = array_map($perms_found, function($item) { return $item->permissions_id });
if (in_array($perm_to_find, $mapped_array)) {
// do something
}
您正在使用stClass(对象)类型。首先转换为数组。它是一个对象数组