Nhận khóa json php

"validate Count Keys" -> Nó sẽ cho ta tất cả các key của mảng nhiều chiều mà giá trị của key không phải là mảng. Sau khi nhận được tất cả các khóa, tôi chỉ cần thực hiện "array_unique" để loại bỏ các mục trùng lặp

Một tài liệu JSON có thể có các đối tượng JSON được lồng bên trong các đối tượng JSON khác. Các đối tượng JSON là các cặp khóa-giá trị và bạn có thể sử dụng các phương thức khác nhau để truy cập các đối tượng JSON từ tài liệu JSON lồng nhau. Một phương pháp là sử dụng đệ quy giống như bạn truy cập dữ liệu từ cấu trúc dữ liệu mảng hoặc cây lồng nhau. Một phương pháp khác là sử dụng các vòng lặp. Hãy xem xét một số ví dụ để truy cập dữ liệu một tài liệu JSON lồng nhau như bên dưới

[{ "id": 1, "name": "Max Adams", "born": "21 Oct 2001", "cars": [ {"make": "Mercedes", "model": "GLS" }, {"make": "Audi", "model": "Q8" } ], "favourite": { "colour": "Blue", "movie": "Toy Story" } }, { "id": 2, "name": "Steven Miller", "born": "28 Jul 2004", "cars": [ {"make": "Tesla", "model": "Model S"} ], "favourite": { "colour": "Red", "movie": "Mulan" } }, { "id": 3, "name": "Daniel James", "born": "18 Dec 2005", "cars": [ {"make": "Bugatti", "model": "Chiron"} ], "favourite": { "colour": "Yellow", "movie": "Frozen", "toy": "Teddy" } }]

Đọc JSON

Hãy xem xét rằng JSON mẫu của chúng tôi được lưu trữ trong một tệp có tên "persons. txt". Đầu tiên đọc nội dung của tệp văn bản thành một biến chuỗi bằng cách sử dụng hàm foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 4 và sau đó sử dụng hàm foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 5 để chuyển đổi chuỗi JSON thành biến PHP

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true);

Lưu ý rằng đối số thứ hai trong hàm foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 6 được đặt thành foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 7 để các đối tượng được trả về sẽ là các mảng kết hợp

Để biết thêm chi tiết về cách phân tích cú pháp JSON trong PHP, hãy đọc Cách phân tích cú pháp JSON trong PHP

Truy cập các đối tượng bên trong một mảng JSON

Để truy cập các đối tượng bên trong một mảng JSON, phương pháp đơn giản và dễ dàng nhất là sử dụng vòng lặp foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 8 để lặp qua các phần tử mảng và tìm nạp dữ liệu mà bạn cần. Ví dụ: để in tất cả tên và số id từ tài liệu JSON mẫu của chúng tôi

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); }

Điều này sẽ xuất ra

________số 8

Truy cập các đối tượng lồng nhau bên trong một mảng JSON

Giá trị của JSON có thể là một đối tượng JSON khác. Trong ví dụ JSON của chúng tôi, có ba đối tượng JSON, mỗi đối tượng tương ứng với thông tin chi tiết về một người. Đối với mỗi người, có một khóa có tên yêu thích có giá trị là một đối tượng JSON khác. Bạn có thể truy cập đối tượng JSON bên trong này giống như khi bạn truy cập một mảng kết hợp đa chiều

Để in tất cả các tên và màu sắc yêu thích tương ứng

foreach($json as $elem) { echo( $elem['name']." - ".$elem['favourite']['colour'] ); echo("
"); }

đầu ra

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 0

Truy cập các mảng JSON bên trong JSON lồng nhau

Nếu bạn có một mảng bên trong một đối tượng JSON lồng nhau thì hãy sử dụng hai vòng lặp foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 8 để truy cập phần tử mảng bên trong

Để in tất cả các tên và những chiếc xe tương ứng

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 2

đầu ra

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 3

Đây là một ví dụ khác để in ra số ô tô mỗi người có

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 4

đầu ra

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 5

Tìm kiếm JSON lồng nhau theo giá trị

Cho đến nay, chúng ta đã thấy cách truy cập tất cả các đối tượng ở một cấp độ cụ thể. Bây giờ chúng ta tìm hiểu cách tìm kiếm một JSON lồng nhau cho một giá trị cụ thể

Ví dụ đầu tiên của chúng tôi là tìm tất cả những người sở hữu 'Tesla' từ JSON mẫu của chúng tôi

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 0

đầu ra

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 1

Trong ví dụ tiếp theo, chúng tôi tìm kiếm những người thích màu 'Xanh dương'

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 2

đầu ra

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 3

Tìm kiếm JSON lồng nhau theo khóa

Trong ví dụ tiếp theo này, chúng tôi tìm kiếm khóa thay vì giá trị. Ví dụ để tìm những người có một món đồ chơi yêu thích

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 4

đầu ra

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 5

Đệ quy nhận tất cả các khóa và giá trị

Bây giờ chúng ta xem xét một phương pháp khác để truy cập dữ liệu từ JSON lồng nhau - Đệ quy. Trong phương thức này, chúng ta tạo một hàm gọi chính nó cho đến khi một điều kiện nhất định được đáp ứng

Hãy bắt đầu với một đoạn mã đơn giản để in tất cả các khóa và giá trị trong tài liệu JSON mẫu của chúng ta

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 6

Trong đoạn mã trên, hàm 2, Steven Miller 3, Daniel James 0 tự gọi nếu giá trị là một mảng, nếu không thì in khóa và giá trị

đầu ra

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 7

Tìm kiếm theo Khóa HOẶC Giá trị theo cách đệ quy

Bạn có thể tìm kiếm đệ quy theo khóa hoặc giá trị bên trong JSON lồng nhau với một sửa đổi nhỏ đối với mã ở trên. Tất cả những gì bạn cần là xác định một hàm nhận hai đối số - một mảng và một Khóa/Giá trị. Sau đó, bạn chạy cùng một đệ quy như trước nhưng bạn có một điều kiện 2, Steven Miller 3, Daniel James 1 khác để kiểm tra khóa/giá trị đã chỉ định

Dưới đây là một ví dụ để có được tất cả các mô hình xe hơi

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 8

đầu ra

$filepath = './persons.txt'; $json_string = file_get_contents($filepath); $json = json_decode($json_string, true); 9

Tương tự, bạn có thể tìm kiếm một giá trị. Ví dụ: để tìm tất cả những người sinh vào một ngày cụ thể

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 0

đầu ra

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 1

Tìm kiếm theo khóa VÀ giá trị theo cách đệ quy

Trong các ví dụ trước, bạn đã tìm kiếm một khóa hoặc giá trị và lặp lại cặp khóa-giá trị đó khi tìm thấy. Tuy nhiên, hầu hết thời gian bạn có thể muốn tìm kiếm một khóa hoặc giá trị và lặp lại nút Cha của nó hoặc một cặp khóa-giá trị khác. Ví dụ: bạn muốn tìm kiếm một ngày và lặp lại tên của người sinh vào ngày đó. Hoặc, tìm kiếm một chiếc ô tô và nhờ những người có chiếc ô tô đó. Đây là chức năng để làm điều đó

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 2

đầu ra

foreach($json_array as $elem) { echo($elem['id']. ", ".$elem['name'] ); echo("
"); } 3

PHP cũng cung cấp một số hàm mảng tích hợp để lấy dữ liệu từ JSON lồng nhau, sau khi chuỗi JSON được giải mã thành đối tượng PHP. Chúng tôi sẽ thảo luận về điều này trong bài tiếp theo

Làm cách nào tôi có thể nhận dữ liệu được mã hóa JSON trong PHP?

PHP và JSON .
Hàm json_encode() dùng để mã hóa một giá trị sang định dạng JSON
Hàm json_decode() được sử dụng để giải mã một đối tượng JSON thành một đối tượng PHP hoặc một mảng kết hợp
Hàm json_decode() trả về một đối tượng theo mặc định. .
Bạn cũng có thể lặp qua các giá trị bằng vòng lặp foreach()

PHP có hỗ trợ JSON không?

PHP có một số hàm tích hợp để xử lý JSON .

Mảng JSON trông như thế nào?

Mảng JSON chứa 0, một hoặc nhiều phần tử được sắp xếp, được phân tách bằng dấu phẩy. Mảng JSON được bao quanh bởi dấu ngoặc vuông [ ] . Một mảng JSON bị kết thúc bằng 0, chỉ mục đầu tiên của mảng bằng 0 (0). Do đó, chỉ số cuối cùng của mảng là chiều dài - 1.

Chủ đề