假设我们有一个数组,例如来自上一个问题...如果我们知道该对象的[id]为[id] => 9,如何找到[X] => stdClass对象?
Array
(
[0] => stdClass Object
(
[id] => 8
[book_category] => C Program
[book_id] => 2
[book_name] => C Language
[book_category_id] => 8
[book_in_stock] => 5
)
[1] => stdClass Object
(
[id] => 8
[book_category] => C Program
[book_id] => 1
[book_name] => C++
[book_category_id] => 8
[book_in_stock] => 10
)
[X] => stdClass Object
(
**[id] => 9**
[book_category] => English
[book_id] => 3
[book_name] => Comp Eng
[book_category_id] => 9
[book_in_stock] => 5
)
[3] => stdClass Object
(
[id] => 9
[book_category] => English
[book_id] => 4
[book_name] => Eng English
[book_category_id] => 9
[book_in_stock] => 5
)
)
最佳答案
在PHP 7上:
$key = array_search( 9, array_column( $array, 'id' ) );
在PHP array_column:
function array_column2( $array, $column )
{
return array_map
(
function( $row ) use( $column )
{
return is_object( $row ) ? $row->$column : $row[$column];
}
, $array
);
}
$key = array_search( 9, array_column2( $array, 'id' ) );
3v4l.org demo
阅读有关array_column()的更多信息
阅读有关array_map()的更多信息