Tôi có mảng JSON sau, trong trường hợp này nó chỉ có ba mục nhập, nhưng cũng có thể có nhiều hơn.JSON: Bắt đầu nhập với giá trị cụ thể
[
{
"id": 45,
"text": "apple"
},
{
"id": 37,
"text": "pear"
},
{
"id": 22,
"text": "strawberry"
}
]
Bây giờ câu hỏi của tôi là: Làm thế nào để tôi có được text
biến của sự xâm nhập với (ví dụ) id
là 37
trong PHP? Có thể dễ dàng nhận được điều đó không?
Những gì tôi biết: Tôi có thể sử dụng một vòng lặp for cho việc tìm kiếm các văn bản như thế này (trong PHP):
<?php
$fruits = json_decode(file_get_contents("file.json"), true); // First I decode the file
for ($i = 0; $i < count($fruits); $i++) {
// Using this for loop and if condition, I get the text I need
if ($fruits[$i]['id'] == 37) echo $fruits[$i]['text'];
}
?>
Nhưng tôi không muốn sử dụng một vòng lặp for, như mảng JSON của tôi có nhiều hơn 3 mục, và nếu tôi yêu cầu rất nhiều dữ liệu trong thời gian ngắn phải mất nhiều thời gian cho đến khi vòng lặp đi qua tất cả các mục nhập. Vì vậy, có một cách hiệu quả hơn để có được kết quả tương tự? Ai đó có thể giải thích cho tôi điều này trong PHP?
Tôi nghĩ bạn phải sử dụng bất kỳ loại vòng lặp nào để nhận thông tin của bạn. Bạn có thể sử dụng 'array_filter()' nhưng điều này cũng có một vòng lặp nội bộ. – TiMESPLiNTER
Hầu hết các giải pháp được đề xuất dưới đây sử dụng vòng lặp (mỗi) bên trong, do đó chúng sẽ không nhanh hơn đáng kể khi đó giải pháp được đề xuất của riêng bạn. Trong trường hợp bạn cần tìm kiếm dữ liệu 'json' nhiều lần, tôi sẽ đề nghị lưu trữ chúng như' khóa' 'giá trị' bằng' id' làm khóa. Điều này đã được đề xuất nhiều lần. – Wilt
Bạn có kiểm soát cấu trúc dữ liệu Dejori David không?Bạn có thể tạo các phần tử được sắp xếp theo id khi bạn tạo dữ liệu json không? nếu có, bạn có thể áp dụng tìm kiếm nhị phân trên đó. – Klaus