假设我们有一个数组,例如来自上一个问题...如果我们知道该对象的[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()的更多信息

10-07 14:07
查看更多