Hướng dẫn how to get value from multidimensional array in php? - cách lấy giá trị từ mảng nhiều chiều trong php?

Đối với những người tìm kiếm php multidimensional array get values và thực sự muốn giải quyết vấn đề đến từ việc lấy một giá trị cột từ một mảng 2 độ (như tôi!), Đây là một cách thanh lịch nhiều so với sử dụng foreach, đó là array_column

Ví dụ: nếu tôi chỉ muốn nhận hotel_name từ mảng bên dưới và hình thành một mảng khác:

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

Tôi có thể làm điều này bằng cách sử dụng array_column:

$hotel_name = array_column($hotels, 'hotel_name');

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

Đối với câu trả lời thực tế cho câu hỏi này, nó cũng có thể được làm đẹp bởi array_column

$hotel_name = array_column($hotels, 'hotel_name');

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

Hãy tạo dữ liệu trong 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
                ]
            ],
        ]
    ]
];

Và đây là tính toán:

$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 . "
"; }

Điều này sẽ cho bạn kết quả sau:

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


Trong các trang trước, chúng tôi đã mô tả các mảng là một danh sách duy nhất các cặp khóa/giá trị.

Tuy nhiên, đôi khi bạn muốn lưu trữ các giá trị với nhiều hơn một khóa. Đối với điều này, chúng tôi có các mảng đa chiều.


PHP - Mảng đa chiều

Một mảng đa chiều là một mảng chứa một hoặc nhiều mảng.

PHP hỗ trợ các mảng đa chiều là hai, ba, bốn, năm hoặc nhiều cấp độ sâu. Tuy nhiên, các mảng sâu hơn ba cấp độ khó có thể quản lý đối với hầu hết mọi người.

Kích thước của một mảng cho biết số lượng chỉ số bạn cần để chọn một phần tử.

  • Đối với một mảng hai chiều, bạn cần hai chỉ số để chọn một phần tử
  • Đối với một mảng ba chiều, bạn cần ba chỉ số để chọn một phần tử


PHP - Mảng hai chiều

Một mảng hai chiều là một mảng mảng (một mảng ba chiều là một mảng mảng mảng).

Đầu tiên, hãy xem bảng sau:

TênCổ phầnĐã bán
Volvo22 18
xe BMW15 13
Saab5 2
Land Rover17 15

Chúng ta có thể lưu trữ dữ liệu từ bảng trên trong một mảng hai chiều, như thế này:

$ cars = mảng (& nbsp; mảng ("volvo", 22,18), & nbsp; mảng ("bmw", 15,13), & nbsp; mảng ("saab", 5,2), & nbsp; mảng ("đất đai (" đất Rover ", 17,15));
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);

Bây giờ, mảng ô tô $ hai chiều chứa bốn mảng và nó có hai chỉ số: hàng và cột.

Để có quyền truy cập vào các yếu tố của mảng $ Cars, chúng ta phải trỏ đến hai chỉ số (hàng và cột):

Thí dụ

echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".
";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".
";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".
";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".
";
?>

Hãy tự mình thử »

Chúng ta cũng có thể đặt một vòng lặp

$hotel_name = array_column($hotels, 'hotel_name');

print_r($hotel_name); // Which will give me ['Hotel A', 'Hotel B']
2 bên trong một vòng
$hotel_name = array_column($hotels, 'hotel_name');

print_r($hotel_name); // Which will give me ['Hotel A', 'Hotel B']
2 khác để có được các phần tử của mảng $ Cars (chúng ta vẫn phải trỏ đến hai chỉ số):

Thí dụ

for ($row = 0; $row < 4; $row++) {
  echo "

Row number $row

";
  echo "
    ";
      for ($col = 0; $col < 3; $col++) {
        echo "
  • ".$cars[$row][$col]."
  • ";
      }
      echo "
";
}
?>

Hãy tự mình thử »


Chúng ta cũng có thể đặt một vòng lặp $hotel_name = array_column($hotels, 'hotel_name'); print_r($hotel_name); // Which will give me ['Hotel A', 'Hotel B'] 2 bên trong một vòng $hotel_name = array_column($hotels, 'hotel_name'); print_r($hotel_name); // Which will give me ['Hotel A', 'Hotel B'] 2 khác để có được các phần tử của mảng $ Cars (chúng ta vẫn phải trỏ đến hai chỉ số):

Hoàn thành tham chiếu mảng PHP

Để tham khảo đầy đủ tất cả các chức năng mảng, hãy truy cập tham chiếu mảng PHP hoàn chỉnh của chúng tôi.



Làm thế nào bạn sẽ truy cập từ nó từ mảng đa chiều?

Để truy cập một phần tử của mảng đa chiều, trước tiên bạn sử dụng dấu ngoặc vuông để truy cập một phần tử của mảng bên ngoài trả về một mảng bên trong; và sau đó sử dụng một khung vuông khác để truy cập phần tử của mảng bên trong.use square brackets to access an element of the outer array that returns an inner array; and then use another square bracket to access the element of the inner array.

In_array có hoạt động trên mảng đa chiều không?

in_array chỉ hoạt động trên một mảng một chiều, vì vậy bạn cần lặp qua mỗi mảng phụ và chạy in_array trên mỗi mảng.Như những người khác đã lưu ý, điều này sẽ chỉ dành cho một mảng 2 chiều.Nếu bạn có nhiều mảng lồng hơn, một phiên bản đệ quy sẽ tốt hơn., so you need to loop over each sub array and run in_array on each. As others have noted, this will only for for a 2-dimensional array. If you have more nested arrays, a recursive version would be better.

Làm thế nào tôi có thể xem mảng 2D trong PHP?

Truy cập các phần tử mảng đa chiều: Chủ yếu có hai cách để truy cập vào các phần tử mảng đa chiều trong PHP.Các phần tử có thể được truy cập bằng các kích thước như Array_Name ['Kích thước thứ nhất'] ['Kích thước thứ hai'].Các yếu tố có thể được truy cập bằng cách sử dụng cho vòng lặp.Các yếu tố có thể được truy cập bằng cách sử dụng cho mỗi vòng lặp.Elements can be accessed using dimensions as array_name['first dimension']['second dimension']. Elements can be accessed using for loop. Elements can be accessed using for each loop.

Mảng đa chiều trong PHP giải thích nó với mã PHP đơn giản là gì?

Một mảng đa chiều là một mảng chứa một hoặc nhiều mảng.PHP hỗ trợ các mảng đa chiều là hai, ba, bốn, năm hoặc nhiều cấp độ sâu.Tuy nhiên, các mảng sâu hơn ba cấp độ khó có thể quản lý đối với hầu hết mọi người.an array containing one or more arrays. PHP supports multidimensional arrays that are two, three, four, five, or more levels deep. However, arrays more than three levels deep are hard to manage for most people.