У меня есть объект 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"}
}
Я знаю, как написать это с «для каждого» а также «если«, но я надеюсь, что есть другой способ. Спасибо
Ваш внешний объект на самом деле является замаскированным массивом. Вы можете преобразовать его в реальный массив, приведя тип:
$arr = (array)$obj;
Тогда вы можете использовать:
$filtered = array_filter(
$arr,
function($item) {
return $item->type == 'parent';
}
);
чтобы получить массив, который содержит только те объекты, которые вам нужны.
Других решений пока нет …