Я даже не уверен, что искать этот вопрос. Что я действительно хочу, так это то, что у меня есть массив таких объектов
array(3) {
[0]=>
object(stdClass)#423 (4) {
["name"]=>
string(3) "Blah"["full_name"]=>
string(10) "/Blah"["id"]=>
string(32) "BlahBlah"["parent_id"]=>
string(32) "BlahBlah"}
[1]=>
object(stdClass)#422 (4) {
["name"]=>
string(8) "Blah1"["full_name"]=>
string(9) "Blah2"["id"]=>
string(32) "BlahBlah2"["parent_id"]=>
NULL
}
[2]=>
object(stdClass)#421 (4) {
["name"]=>
string(4) "Blah3"["full_name"]=>
string(11) "Blah3"["id"]=>
string(32) "BlahBlah3"["parent_id"]=>
string(32) "BlahBlahBlah3"}
}
Я хочу фильтровать только объект, который я хочу, чтобы я сделал
$found_label = array_filter($labels, function($obj) use($label) {
return $obj->name === $label;
});
Но тогда результаты, которые я получил, это
array(1) {
[1]=>
object(stdClass)#422 (4) {
["name"]=>
string(8) "Blah1"["full_name"]=>
string(9) "Blah1"["id"]=>
string(32) "BlahBlah2"["parent_id"]=>
NULL
}
}
Но то, что я действительно хочу, это просто
object(stdClass)#422 (4) {
["name"]=>
string(8) "Blah1"["full_name"]=>
string(9) "Blah1"["id"]=>
string(32) "BlahBlah2"["parent_id"]=>
NULL
}
Тогда я должен сделать это, чтобы просто получить фактический объект
$theKey = key($found_label);
return $found_label[$theKey];
Я думал, что они должны быть лучшим способом сделать это, также я новичок в PHP.
Вы не можете сделать это с помощью array_filter, нет способа остановить его и вернуть только первый результат. Если вы не можете использовать ключ для извлечения нужного результата из массива, возвращенного из array_filter, вы должны использовать цикл. Что-то вроде этого:
$label = "wantedLabel";
foreach ($labels as $l) {
if( $l->name === $label ) {
print_r ($l);
break;
}
}
Это:
<?php
$labels = array(
"0" => (object) array('name' => "name1", "title" => "title1"),
"1" => (object) array('name' => "name2", "title" => "title2")
);
$label = "name1";
$found_label = array_filter($labels, function($obj) use($label) {
return $obj->name === $label;
});
print_r($found_label[0]);
Производит:
stdClass Object ( [name] => name1 [title] => title1 )