массивы — PHP, stdClass, select elements содержит указанный элемент

У меня есть объект stClass, как это:

object(stdClass)#2 (6) {
[0]=>
object(stdClass)#44 (2) {
["uid"]=>
int(3232)
["type"]=>
string(7) "sibling"}
[1]=>
object(stdClass)#43 (2) {
["uid"]=>
int(32323)
["type"]=>
string(7) "sibling"}
[2]=>
object(stdClass)#42 (2) {
["uid"]=>
int(3213)
["type"]=>
string(10) "grandchild"}
[3]=>
object(stdClass)#41 (3) {
["uid"]=>
int(-680411188)
["type"]=>
string(6) "parent"}
[4]=>
object(stdClass)#40 (3) {
["uid"]=>
int(-580189276)
["type"]=>
string(6) "parent"}
[5]=>
object(stdClass)#39 (2) {
["uid"]=>
int(3213)
["type"]=>
string(7) "sibling"}
}

Как я могу получить элементы с указанным значением типа элемента?
Например, если я выберу «родитель», я хочу получить это:

object(stdClass)#2 (6) {
[3]=>
object(stdClass)#41 (3) {
["uid"]=>
int(-680411188)
["type"]=>
string(6) "parent"}
[4]=>
object(stdClass)#40 (3) {
["uid"]=>
int(-580189276)
["type"]=>
string(6) "parent"}
}

Я знаю, как написать это с «для каждого» а также «если«, но я надеюсь, что есть другой способ. Спасибо

0

Решение

Ваш внешний объект на самом деле является замаскированным массивом. Вы можете преобразовать его в реальный массив, приведя тип:

$arr = (array)$obj;

Тогда вы можете использовать:

$filtered = array_filter(
$arr,
function($item) {
return $item->type == 'parent';
}
);

чтобы получить массив, который содержит только те объекты, которые вам нужны.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]