php multidimensional array get values

前端 未结 2 563
借酒劲吻你
借酒劲吻你 2020-12-13 07:23

This is my array in php $hotels

Array
(
    [0] => Array
        (
        [hotel_name] => Name
        [info] => info
        [roo         


        
2条回答
  •  难免孤独
    2020-12-13 07:45

    For people who searched for php multidimensional array get values and actually want to solve problem comes from getting one column value from a 2 dimensinal array (like me!), here's a much elegant way than using foreach, which is array_column

    For example, if I only want to get hotel_name from the below array, and form to another array:

    $hotels = [
        [
            'hotel_name' => 'Hotel A',
            'info' => 'Hotel A Info',
        ],
        [
            'hotel_name' => 'Hotel B',
            'info' => 'Hotel B Info',
        ]
    ];
    

    I can do this using array_column:

    $hotel_name = array_column($hotels, 'hotel_name');
    
    print_r($hotel_name); // Which will give me ['Hotel A', 'Hotel B']
    

    For the actual answer for this question, it can also be beautified by array_column and call_user_func_array('array_merge', $twoDimensionalArray);

    Let's make the data in PHP:

    $hotels = [
        [
            'hotel_name' => 'Hotel A',
            'info' => 'Hotel A Info',
            'rooms' => [
                [
                    'room_name' => 'Luxury Room',
                    'bed' => 2,
                    'boards' => [
                        'board_id' => 1,
                        'price' => 200
                    ]
                ],
                [
                    'room_name' => 'Non Luxy Room',
                    'bed' => 4,
                    'boards' => [
                        'board_id' => 2,
                        'price' => 150
                    ]
                ],
            ]
        ],
        [
            'hotel_name' => 'Hotel B',
            'info' => 'Hotel B Info',
            'rooms' => [
                [
                    'room_name' => 'Luxury Room',
                    'bed' => 2,
                    'boards' => [
                        'board_id' => 3,
                        'price' => 900
                    ]
                ],
                [
                    'room_name' => 'Non Luxy Room',
                    'bed' => 4,
                    'boards' => [
                        'board_id' => 4,
                        'price' => 300
                    ]
                ],
            ]
        ]
    ];
    

    And here's the calculation:

    $rooms = array_column($hotels, 'rooms');
    $rooms = call_user_func_array('array_merge', $rooms);
    $boards = array_column($rooms, 'boards');
    
    foreach($boards as $board){
        $board_id = $board['board_id'];
        $price = $board['price'];
        echo "Board ID is: ".$board_id." and price is: ".$price . "
    "; }

    Which will give you the following result:

    Board ID is: 1 and price is: 200
    Board ID is: 2 and price is: 150
    Board ID is: 3 and price is: 900
    Board ID is: 4 and price is: 300
    

提交回复
热议问题