Tìm giá trị trong mảng json php

Trong bài viết này, chúng ta sẽ xem cách truy xuất JSON POST bằng PHP và cũng sẽ xem cách triển khai chúng thông qua các ví dụ. Đầu tiên, chúng tôi sẽ tìm kiếm 3 tính năng dưới đây

  • php. //đầu vào. Đây là luồng chỉ đọc cho phép chúng tôi đọc dữ liệu thô từ phần thân yêu cầu. Nó trả về tất cả dữ liệu thô sau tiêu đề HTTP của yêu cầu, bất kể loại nội dung
  • hàm file_get_contents(). Hàm này trong PHP được sử dụng để đọc một tệp thành một chuỗi
  • hàm json_decode(). Hàm này lấy một chuỗi JSON và chuyển đổi nó thành một biến PHP có thể là một mảng hoặc một đối tượng

Được biết, tất cả dữ liệu bài đăng có thể được nhận trong tập lệnh PHP bằng cách sử dụng biến toàn cục $_POST[]. Nhưng điều này không thành công trong trường hợp chúng tôi muốn nhận chuỗi JSON dưới dạng dữ liệu bài đăng. Để nhận chuỗi JSON, chúng ta có thể sử dụng “php. //input” cùng với hàm file_get_contents() giúp chúng ta nhận dữ liệu JSON dưới dạng file và đọc thành chuỗi. Sau này, chúng ta có thể sử dụng hàm json_decode() để giải mã chuỗi JSON

Xử lý các yêu cầu POST JSON

// Takes raw data from the request
$json = file_get_contents('php://input');

// Converts it into a PHP object
$data = json_decode($json);

ví dụ 1. Ví dụ này sử dụng hàm json_decode() được sử dụng để giải mã chuỗi JSON

PHP




  $json ='["geeks", "for", "geeks"]';

  

geeks
0
geeks
1$json
geeks
3

  

geeks
5
geeks
0
geeks
7

geeks
8

đầu ra.

geeks

 

ví dụ 2. Ví dụ này sử dụng hàm json_decode() được sử dụng để giải mã chuỗi JSON

PHP




  $json

PHP
GeeksforGeeks
2

PHP
GeeksforGeeks
3
PHP
GeeksforGeeks
4_______9_______5_______9_______6_______9_______7

PHP
GeeksforGeeks
3
PHP
GeeksforGeeks
9
PHP
GeeksforGeeks
51

  3

  

geeks
0
geeks
1$json
geeks
3

  

geeks
5
geeks
0  2

  

geeks
5   5;

  

geeks
5
geeks
0$json0

geeks
8

đầu ra.

PHP
GeeksforGeeks

 

PHP là ngôn ngữ kịch bản phía máy chủ được thiết kế dành riêng cho phát triển web. Bạn có thể học PHP từ đầu bằng cách làm theo Hướng dẫn PHP và Ví dụ về PHP này

Giả sử bạn cần tìm xem có bao nhiêu ô tô trong cửa hàng ô tô của bạn có động cơ được chế tạo lại và cột này là một JSON với một loạt các lỗi được chẩn đoán

Làm thế nào bạn có thể làm truy vấn này?

Tìm giá trị trong mảng json php

SELECT COUNT(DISTINCT(CARS)) from CARS
where CARS.DIAGNOSES->>"$.diagnoses[*].failure.name" LIKE '%rebuilded engine%'

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Ngoài ra, toán tử ->> không trích dẫn kết quả được trích xuất. Nói cách khác, đưa ra một giá trị cột JSON column và một biểu thức đường dẫn path (một chuỗi ký tự)
Toán tử ->> có thể được sử dụng bất cứ nơi nào cho phép JSON_UNQUOTE(JSON_EXTRACT()). Điều này bao gồm (nhưng không giới hạn) danh sách SELECT, mệnh đề WHEREHAVING, và mệnh đề ->>0 và ->>1

->>2 chỉ ra cách bạn có thể truy cập một json và ->>3 có thể tìm kiếm ở bất kỳ vị trí nào của một mảng

Ký hiệu đối tượng JavaScript (JSON) là định dạng văn bản nhẹ mà con người có thể đọc được để lưu trữ và vận chuyển dữ liệu bao gồm các cặp giá trị tên và mảng

Dễ dàng tạo và phân tích cú pháp bằng nhiều ngôn ngữ lập trình. Đây là định dạng trao đổi dữ liệu nhẹ và phổ biến nhất cho các ứng dụng web và định dạng thực tế để trao đổi dữ liệu trong các yêu cầu và phản hồi của dịch vụ web RESTful

Trong bài đăng này, chúng tôi sẽ đề cập đến cách giải mã một đối tượng JSON và truy cập dữ liệu của nó trong PHP

Dưới đây là một ví dụ về một đối tượng JSON đơn giản


{
  "firstName": "John", 
  "lastName": "Doe", 
  "email": "[email protected]", 
  "phone": "111-111-1111"
 }

 

Cách nhận dữ liệu JSON trong PHP

1. Từ yêu cầu POST hoặc GET

Để nhận dữ liệu JSON dưới dạng yêu cầu POST, chúng tôi sử dụng “php. //input” cùng với hàm file_get_contents() như bên dưới


$json = file_get_contents("php://input");

Chẳng hạn, dữ liệu JSON được gửi bên dưới dưới dạng yêu cầu POST

Để nhận dữ liệu yêu cầu trên trong sổ đăng ký. php, chỉ cần thêm file_get_contents("php. //input") và gán nó cho một biến để xử lý, vd

 

2. Đọc một tệp JSON

Tệp JSON chứa đối tượng JSON và có phần mở rộng tệp là. json. Bạn cũng có thể mở tệp bằng PHP và truy cập dữ liệu của nó

Tương tự như yêu cầu POST hoặc GET, chúng tôi sử dụng file_get_contents() nhưng thay vì có “php. //input”, chúng tôi sử dụng đường dẫn tệp

Ví dụ: nếu chúng tôi có tệp JSON có đường dẫn "https. //www. thí dụ. com/mydata. json", chúng ta có thể truy cập dữ liệu của nó như bên dưới

Nếu tệp json và tệp PHP truy cập tệp nằm trong cùng một trang web, chúng tôi có thể sử dụng đường dẫn tương đối thay vì URL tệp đầy đủ

 

Trích xuất/Giải mã dữ liệu JSON trong PHP

Chúng ta sử dụng hàm có sẵn


$json = file_get_contents("php://input");
6 để chuyển đổi chuỗi JSON thành kiểu dữ liệu phù hợp như đối tượng hoặc mảng

cú pháp

 

1. Truy cập dữ liệu JSON dưới dạng đối tượng PHP

Theo mặc định, hàm json_decode() trả về một đối tượng

Thí dụ
Ví dụ bên dưới giải mã một đối tượng JSON thành một đối tượng PHP

Ví dụ trên xuất ra bên dưới

object(stdClass)#1 (4) { ["firstName"]=> string(4) "John" ["lastName"]=> string(3) "Doe" ["email"]=> string(17) " . com" ["phone"]=> string(12) "111-111-1111" }

Để truy cập dữ liệu đối tượng PHP, bạn sử dụng toán tử đối tượng (->) sau tên đối tượng, theo sau là khóa của cặp khóa-giá trị. Tên này giống với tên trong cặp tên-giá trị trong đối tượng JSON, ví dụ: $data->firstName

Thí dụ

firstName." ".$data->lastName;
//Output: My name is John Doe

2. Truy cập dữ liệu JSON dưới dạng một mảng

Bạn cũng có thể chuyển đổi đối tượng JSON thành mảng kết hợp PHP bằng cách chuyển tham số thứ hai (tùy chọn) trong hàm json_decode() với giá trị boolean "true" như bên dưới. Giá trị được đặt thành false theo mặc định nếu bạn không vượt qua nó

Ví dụ bên dưới giải mã đối tượng JSON thành một mảng kết hợp PHP

Ví dụ trên xuất ra bên dưới

mảng(4) { ["firstName"]=> string(4) "John" ["lastName"]=> string(3) "Doe" ["email"]=> string(17) "johndoe@gmail. com" ["phone"]=> string(12) "111-111-1111" }

Bạn truy cập dữ liệu như trong bất kỳ mảng kết hợp PHP nào khác như trong ví dụ bên dưới


$json = file_get_contents("php://input");
0

 

3. Truy cập dữ liệu trong một đối tượng JSON lồng nhau

Một đối tượng JSON có thể bao gồm các đối tượng json và mảng dưới dạng các giá trị trong cặp tên-giá trị của nó, chẳng hạn như trong ví dụ bên dưới


$json = file_get_contents("php://input");
1

Trong ví dụ trên, "địa chỉ" có một đối tượng làm giá trị của nó trong khi "anh chị em" có một giá trị mảng bao gồm các đối tượng

Cách dễ nhất để truy cập tất cả dữ liệu là giải mã đối tượng dưới dạng một mảng kết hợp

Thí dụ


$json = file_get_contents("php://input");
2

 

Lặp qua một đối tượng của các đối tượng với foreach()

Bạn có thể có một đối tượng JSON lớn được tạo từ một mảng các đối tượng, như trong ví dụ bên dưới


$json = file_get_contents("php://input");
3

Để truy cập các giá trị của một quốc gia trong ví dụ trên, bạn chỉ cần biết vị trí đối tượng của nó trong mảng. Ví dụ, Trung Quốc ở vị trí thứ ba. Nhưng khi truy xuất các item của mảng thì ta bắt đầu đếm từ 0 nên chỉ số của China trong mảng là 2

Ta truy cập đối tượng mảng China như bên dưới


$json = file_get_contents("php://input");
4

Nếu bạn muốn truy cập tất cả dữ liệu mảng thì việc viết mã để truy cập từng dữ liệu tại một thời điểm có thể rất mệt mỏi và tốn thời gian, đặc biệt là khi đối tượng lớn. Đối với trường hợp như vậy, bạn có thể sử dụng hàm foreach() để lặp qua tất cả các đối tượng như bên dưới


$json = file_get_contents("php://input");
5

 

Phần kết luận

Trong bài đăng này, chúng tôi đã đề cập đến mọi thứ bạn cần biết trong việc trích xuất và truy cập dữ liệu đối tượng JSON bằng PHP

Bạn cũng có thể muốn tìm hiểu cách tạo một đối tượng JSON trong PHP

Nếu bạn muốn nhận thông báo qua email khi chúng tôi thêm nội dung đáng kinh ngạc hơn vào blog của mình, vui lòng đăng ký nhận bản tin email của chúng tôi

Làm cách nào để lấy giá trị của mảng JSON trong PHP?

Hàm json_encode() dùng để chuyển đổi giá trị của mảng thành JSON.

Làm cách nào để lấy khóa và giá trị từ đối tượng mảng JSON trong PHP?

theo mặc định, json_decode xuất các phần tử dưới dạng đối tượng, nếu bạn muốn một mảng kết hợp thay vì lặp lại, hãy sử dụng json_decode($string, true) – Kaddath. Tháng Một 4, 2018 tại 12. 28
$val của bạn là một mảng (xem cấu trúc của json). Bạn cũng cần một vòng lặp bên trong như foreach ($val as $item){ // your code} – YvesLeBorg

Cách lấy giá trị dữ liệu 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()

Làm cách nào để lấy dữ liệu cụ thể từ đối tượng JSON trong PHP?

Để nhận chuỗi JSON, chúng ta có thể sử dụng “php. //input” cùng với hàm file_get_contents() giúp chúng ta nhận dữ liệu JSON dưới dạng file và đọc thành chuỗi. Sau này, chúng ta có thể sử dụng hàm json_decode() để giải mã chuỗi JSON.