Hướng dẫn search in json file php - tìm kiếm trong tệp json php
Đây là tệp JSON của tôi có chứa các mục của tôi. Tôi muốn tìm kiếm tên vật phẩm và trả về ID. Show
CODE:
Tệp JSON:
Hỏi ngày 24 tháng 1 năm 2016 lúc 21:29Jan 24, 2016 at 21:29
0 Logic của bạn là chính xác, nhưng bạn có một vài lỗi trong mã của mình:
Try:
Đã trả lời ngày 24 tháng 1 năm 2016 lúc 21:40Jan 24, 2016 at 21:40
Mathew Tinsleymathew TinsleyMathew Tinsley 6.6252 Huy hiệu vàng28 Huy hiệu bạc37 Huy hiệu đồng2 gold badges28 silver badges37 bronze badges 3 php-jsonq`Data` - có thể là đường dẫn tệp JSON hoặc chuỗi JSON hoặc đối tượng JSON. Nếu không có dữ liệu nào được truyền trong tham số `data`, phiên bản đối tượng` jsonq` sẽ được đặt lại về dữ liệu được khởi tạo trước đó. is a simple, elegant PHP package to Query over any type of JSON Data. It'll make your life easier by giving the flavour of an ORM-like query on your JSON. Tại bất kỳ điểm nào, bạn có thể muốn đặt lại thể hiện đối tượng thành một tập dữ liệu hoàn toàn khác và sau đó truy vấn nó. Bạn có thể sử dụng phương pháp này trong trường hợp đó.Xem một ví dụ chi tiết ở đây. Nó sẽ trả về một bản sao hoàn chỉnh của thể hiện đối tượng.Lỗi và vấn đềNếu bạn gặp bất kỳ lỗi hoặc vấn đề nào, hãy thoải mái mở một vấn đề tại GitHub.Ngoài ra, bạn có thể gửi cho tôi một email cho những cái ôm hoặc lỗi.
Nền tảng khác
Gói này cũng có hỗ trợ ngôn ngữ khác nhau.
JavaScript Jsonq được phát triển bởi Ahmed Shamimfind, where, orWhere, whereIn, whereStartsWith, whereEndsWith, whereContains and so on. Also you can aggregate your data after query using sum, count, groupBy, max, min etc. Python Jsonq được phát triển bởi Shaon Shaonty
GO JSONQ được phát triển bởi Saddam H - sắp tớisum() method instead of get():
Hỗ trợ trên bia Nay ban! Giúp tôi với một vài: bia:! JSONQ là một gói PHP đơn giản, thanh lịch để truy vấn bất kỳ loại dữ liệu JSON nào. Nó sẽ làm cho cuộc sống của bạn dễ dàng hơn bằng cách cung cấp hương vị của một truy vấn giống như ORM trên JSON của bạn.Hỗ trợ cho dự án này Danh sách API:
composer require nahid/jsonq 1Phương thức này sẽ thực thi các truy vấn và sẽ trả về dữ liệu kết quả. Bạn cần gọi nó cuối cùng sau khi sử dụng một số phương thức truy vấn. Chi tiết có thể được tìm thấy trong các ví dụ API khác. composer require nahid/jsonq 2
Bạn không cần phải gọi phương thức 1 sau này. Bởi vì phương pháp này sẽ tìm nạp và trả lại dữ liệu của chính nó.Hãy cẩn thận: Bạn không thể chuỗi các phương thức truy vấn tiếp theo sau đó. Nếu bạn cần điều đó, bạn nên sử dụng phương thức 4 or 5 method.example: Giả sử bạn muốn nhận được giá trị của thuộc tính _'Cities'_ của dữ liệu JSON của bạn. Bạn có thể làm điều đó như thế này: 0Nếu bạn muốn đi qua hệ thống phân cấp sâu hơn, bạn có thể làm điều đó như: 0Xem một ví dụ chi tiết ở đây. composer require nahid/jsonq 6
Theo mặc định, truy vấn sẽ được bắt đầu từ gốc của dữ liệu JSON bạn đã đưa ra. Nếu trước tiên bạn muốn chuyển sang hệ thống phân cấp đường dẫn lồng nhau của dữ liệu từ nơi bạn muốn bắt đầu truy vấn của mình, bạn sẽ sử dụng phương thức này. Bỏ qua tham số 7 hoặc cho '.' Vì tham số cũng sẽ bắt đầu truy vấn từ dữ liệu gốc.'.' as parameter will also start
query from the root Data.Sự khác biệt giữa phương pháp này và 8 là, phương thức 8 sẽ trả về dữ liệu từ hệ thống phân cấp đường dẫn đã cho. Mặt khác, phương thức này sẽ trả về thể hiện đối tượng, để bạn có thể tiếp tục chuỗi các phương thức truy vấn sau nó.example: Giả sử bạn muốn bắt đầu truy vấn qua các giá trị của thuộc tính _'Vendor.name'_ của dữ liệu JSON của bạn. Bạn có thể làm điều đó như thế này: 2Nếu bạn muốn đi qua hệ thống phân cấp sâu hơn, bạn có thể làm điều đó như: 3Xem một ví dụ chi tiết ở đây. use Nahid/JsonQ/Jsonq; $jsonq = new Jsonq('data.json'); 0`path` (tùy chọn) - Hệ thống phân cấp đường dẫn của dữ liệu bạn muốn bắt đầu truy vấn. use Nahid/JsonQ/Jsonq; $jsonq = new Jsonq('data.json'); 2
example: `key` - tên thuộc tính của dữ liệu. Hoặc bạn có thể chuyển một chức năng ở đây để nhóm nhiều truy vấn bên trong nó. Xem chi tiết trong ví dụ 4`val` - giá trị được khớp với. Nó có thể là một _int_, _String_, _bool_ hoặc thậm chí _function_ - tùy thuộc vào `op`. 5Xem một ví dụ chi tiết ở đây. $json->collect(['id'=>1, 'name'=>'Nahid']); 2`path` (tùy chọn) - Hệ thống phân cấp đường dẫn của dữ liệu bạn muốn bắt đầu truy vấn. Theo mặc định, truy vấn sẽ được bắt đầu từ gốc của dữ liệu JSON bạn đã đưa ra. Nếu trước tiên bạn muốn chuyển sang hệ thống phân cấp đường dẫn lồng nhau của dữ liệu từ nơi bạn muốn bắt đầu truy vấn của mình, bạn sẽ sử dụng phương thức này. Bỏ qua tham số 7 hoặc cho '.' Vì tham số cũng sẽ bắt đầu truy vấn từ dữ liệu gốc.Sự khác biệt giữa phương pháp này và 8 là, phương thức 8 sẽ trả về dữ liệu từ hệ thống phân cấp đường dẫn đã cho. Mặt khác, phương thức này sẽ trả về thể hiện đối tượng, để bạn có thể tiếp tục chuỗi các phương thức truy vấn sau nó.Giả sử bạn muốn bắt đầu truy vấn qua các giá trị của thuộc tính _'Vendor.name'_ của dữ liệu JSON của bạn. Bạn có thể làm điều đó như thế này: //data.json { "name": "products", "description": "Features product list", "vendor":{ "name": "Computer Source BD", "email": "", "website":"www.example.com" }, "users":[ {"id":1, "name":"Johura Akter Sumi", "location": "Barisal"}, {"id":2, "name":"Mehedi Hasan Nahid", "location": "Barisal"}, {"id":3, "name":"Ariful Islam", "location": "Barisal"}, {"id":4, "name":"Suhel Ahmed", "location": "Sylhet"}, {"id":5, "name":"Firoz Serniabat", "location": "Gournodi"}, {"id":6, "name":"Musa Jewel", "location": "Barisal", "visits": [ {"name": "Sylhet", "year": 2011}, {"name": "Cox's Bazar", "year": 2012}, {"name": "Bandarbar", "year": 2014} ]} ], "products": [ {"id":1, "user_id": 2, "city": "bsl", "name":"iPhone", "cat":1, "price": 80000}, {"id":2, "user_id": 2, "city": null, "name":"macbook pro", "cat": 2, "price": 150000}, {"id":3, "user_id": 2, "city": "dhk", "name":"Redmi 3S Prime", "cat": 1, "price": 12000}, {"id":4, "user_id": 1, "city": null, "name":"Redmi 4X", "cat":1, "price": 15000}, {"id":5, "user_id": 1, "city": "bsl", "name":"macbook air", "cat": 2, "price": 110000}, {"id":6, "user_id": 2, "city": null, "name":"macbook air 1", "cat": 2, "price": 81000} ] } 0
`val` - giá trị được khớp với. Nó có thể là một _int_, _String_, _bool_ hoặc thậm chí _function_ - tùy thuộc vào `op`. //data.json { "name": "products", "description": "Features product list", "vendor":{ "name": "Computer Source BD", "email": "", "website":"www.example.com" }, "users":[ {"id":1, "name":"Johura Akter Sumi", "location": "Barisal"}, {"id":2, "name":"Mehedi Hasan Nahid", "location": "Barisal"}, {"id":3, "name":"Ariful Islam", "location": "Barisal"}, {"id":4, "name":"Suhel Ahmed", "location": "Sylhet"}, {"id":5, "name":"Firoz Serniabat", "location": "Gournodi"}, {"id":6, "name":"Musa Jewel", "location": "Barisal", "visits": [ {"name": "Sylhet", "year": 2011}, {"name": "Cox's Bazar", "year": 2012}, {"name": "Bandarbar", "year": 2014} ]} ], "products": [ {"id":1, "user_id": 2, "city": "bsl", "name":"iPhone", "cat":1, "price": 80000}, {"id":2, "user_id": 2, "city": null, "name":"macbook pro", "cat": 2, "price": 150000}, {"id":3, "user_id": 2, "city": "dhk", "name":"Redmi 3S Prime", "cat": 1, "price": 12000}, {"id":4, "user_id": 1, "city": null, "name":"Redmi 4X", "cat":1, "price": 15000}, {"id":5, "user_id": 1, "city": "bsl", "name":"macbook air", "cat": 2, "price": 110000}, {"id":6, "user_id": 2, "city": null, "name":"macbook air 1", "cat": 2, "price": 81000} ] } 2
`val` - giá trị được khớp với. Nó có thể là một _int_, _String_, _bool_ hoặc thậm chí _function_ - tùy thuộc vào `op`. `op` - toán hạng sẽ được sử dụng để kết hợp. Các toán hạng sau đây có sẵn để sử dụng:
`key` - tên thuộc tính của dữ liệu. Hoặc bạn có thể chuyển một chức năng ở đây để nhóm nhiều truy vấn bên trong nó. Xem chi tiết trong ví dụ //data.json { "name": "products", "description": "Features product list", "vendor":{ "name": "Computer Source BD", "email": "", "website":"www.example.com" }, "users":[ {"id":1, "name":"Johura Akter Sumi", "location": "Barisal"}, {"id":2, "name":"Mehedi Hasan Nahid", "location": "Barisal"}, {"id":3, "name":"Ariful Islam", "location": "Barisal"}, {"id":4, "name":"Suhel Ahmed", "location": "Sylhet"}, {"id":5, "name":"Firoz Serniabat", "location": "Gournodi"}, {"id":6, "name":"Musa Jewel", "location": "Barisal", "visits": [ {"name": "Sylhet", "year": 2011}, {"name": "Cox's Bazar", "year": 2012}, {"name": "Bandarbar", "year": 2014} ]} ], "products": [ {"id":1, "user_id": 2, "city": "bsl", "name":"iPhone", "cat":1, "price": 80000}, {"id":2, "user_id": 2, "city": null, "name":"macbook pro", "cat": 2, "price": 150000}, {"id":3, "user_id": 2, "city": "dhk", "name":"Redmi 3S Prime", "cat": 1, "price": 12000}, {"id":4, "user_id": 1, "city": null, "name":"Redmi 4X", "cat":1, "price": 15000}, {"id":5, "user_id": 1, "city": "bsl", "name":"macbook air", "cat": 2, "price": 110000}, {"id":6, "user_id": 2, "city": null, "name":"macbook air 1", "cat": 2, "price": 81000} ] } 7
`key` - tên thuộc tính của dữ liệu. Hoặc bạn có thể chuyển một chức năng ở đây để nhóm nhiều truy vấn bên trong nó. Xem chi tiết trong ví dụ use Nahid\JsonQ\Jsonq; $q = new Jsonq('data.json'); $res = $q->from('products') ->where('cat', '=', 2) ->get(); dump($res); //This will print /* array:3 [? 1 => {#7 ? +"id": 2 +"user_id": 2 +"city": null +"name": "macbook pro" +"cat": 2 +"price": 150000 } 4 => {#8 ? +"id": 5 +"user_id": 1 +"city": "bsl" +"name": "macbook air" +"cat": 2 +"price": 110000 } 5 => {#9 ? +"id": 6 +"user_id": 2 +"city": null +"name": "macbook air 1" +"cat": 2 +"price": 81000 } ] */ 0
`val` - giá trị được khớp với. Nó có thể là một _int_, _String_, _bool_ hoặc thậm chí _function_ - tùy thuộc vào `op`. use Nahid\JsonQ\Jsonq; $q = new Jsonq('data.json'); $res = $q->from('products') ->where('cat', '=', 2) ->get(); dump($res); //This will print /* array:3 [? 1 => {#7 ? +"id": 2 +"user_id": 2 +"city": null +"name": "macbook pro" +"cat": 2 +"price": 150000 } 4 => {#8 ? +"id": 5 +"user_id": 1 +"city": "bsl" +"name": "macbook air" +"cat": 2 +"price": 110000 } 5 => {#9 ? +"id": 6 +"user_id": 2 +"city": null +"name": "macbook air 1" +"cat": 2 +"price": 81000 } ] */ 2
`val` - giá trị được khớp với. Nó có thể là một _int_, _String_, _bool_ hoặc thậm chí _function_ - tùy thuộc vào `op`. use Nahid\JsonQ\Jsonq; $q = new Jsonq('data.json'); $res = $q->from('products') ->where('cat', '=', 2) ->get(); dump($res); //This will print /* array:3 [? 1 => {#7 ? +"id": 2 +"user_id": 2 +"city": null +"name": "macbook pro" +"cat": 2 +"price": 150000 } 4 => {#8 ? +"id": 5 +"user_id": 1 +"city": "bsl" +"name": "macbook air" +"cat": 2 +"price": 110000 } 5 => {#9 ? +"id": 6 +"user_id": 2 +"city": null +"name": "macbook air 1" +"cat": 2 +"price": 81000 } ] */ 4
`val` - giá trị được khớp với. Nó có thể là một _int_, _String_, _bool_ hoặc thậm chí _function_ - tùy thuộc vào `op`. use Nahid\JsonQ\Jsonq; $q = new Jsonq('data.json'); $res = $q->from('products') ->where('cat', '=', 2) ->get(); dump($res); //This will print /* array:3 [? 1 => {#7 ? +"id": 2 +"user_id": 2 +"city": null +"name": "macbook pro" +"cat": 2 +"price": 150000 } 4 => {#8 ? +"id": 5 +"user_id": 1 +"city": "bsl" +"name": "macbook air" +"cat": 2 +"price": 110000 } 5 => {#9 ? +"id": 6 +"user_id": 2 +"city": null +"name": "macbook air 1" +"cat": 2 +"price": 81000 } ] */ 6
example: * `=`: Đối với khớp bình đẳng yếu * `eq`: giống như` = ` *`! Kết hợp * `seq`: giống như` == ` *`! gt`: giống như `>` 4: Kiểm tra xem giá trị của dữ liệu đã cho là ít hơn nữa * * `lt`: giống như` = ` 6: Kiểm tra xem giá trị của dữ liệu đã cho là nhỏ hơn hoặc bằng với giá trị * *` lte`: Giống như ` 7Nếu dữ liệu bạn đang tổng hợp là mảng đơn giản, bạn không cần phải vượt qua tham số 'cột'. Xem ví dụ chi tiết ở đây use Nahid\JsonQ\Jsonq; $q = new Jsonq('data.json'); $res = $q->from('products') ->where('cat', '=', 2) ->get(); dump($res); //This will print /* array:3 [? 1 => {#7 ? +"id": 2 +"user_id": 2 +"city": null +"name": "macbook pro" +"cat": 2 +"price": 150000 } 4 => {#8 ? +"id": 5 +"user_id": 1 +"city": "bsl" +"name": "macbook air" +"cat": 2 +"price": 110000 } 5 => {#9 ? +"id": 6 +"user_id": 2 +"city": null +"name": "macbook air 1" +"cat": 2 +"price": 81000 } ] */ 7Nó sẽ trả về số lượng các yếu tố trong bộ sưu tập. example: Giả sử bạn muốn tìm thấy có bao nhiêu phần tử trong thuộc tính _'Products'_. Bạn có thể làm điều đó như: 8Xem ví dụ chi tiết ở đây. use Nahid\JsonQ\Jsonq; $q = new Jsonq('data.json'); $res = $q->from('products') ->where('cat', '=', 2) ->get(); dump($res); //This will print /* array:3 [? 1 => {#7 ? +"id": 2 +"user_id": 2 +"city": null +"name": "macbook pro" +"cat": 2 +"price": 150000 } 4 => {#8 ? +"id": 5 +"user_id": 1 +"city": "bsl" +"name": "macbook air" +"cat": 2 +"price": 110000 } 5 => {#9 ? +"id": 6 +"user_id": 2 +"city": null +"name": "macbook air 1" +"cat": 2 +"price": 81000 } ] */ 8Đây là một phương pháp bí danh của 7.$result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 0
example: Giả sử bạn muốn tìm mức tối đa của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này: 9Nếu dữ liệu bạn đang truy vấn là mảng đơn giản, bạn không cần phải vượt qua tham số 'cột'. Xem ví dụ chi tiết ở đây $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 1
example: Giả sử bạn muốn tìm mức tối đa của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này: 0Nếu dữ liệu bạn đang truy vấn là mảng đơn giản, bạn không cần phải vượt qua tham số 'cột'. Xem ví dụ chi tiết ở đây $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 2
example: Giả sử bạn muốn tìm mức tối đa của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này: 1Nếu dữ liệu bạn đang truy vấn là mảng đơn giản, bạn không cần phải vượt qua tham số 'cột'. Xem ví dụ chi tiết ở đây $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 3Giả sử bạn muốn tìm mức tối thiểu của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này: example: 2Xem ví dụ chi tiết ở đây. $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 4Đây là một phương pháp bí danh của 7.example: 3Xem ví dụ chi tiết ở đây. $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 5
`cột` - tên thuộc tính của dữ liệupositive value, it will return the nth element from the beginning. If the given index is a negative value, it will return the nth element from the end. example: 4Xem ví dụ chi tiết ở đây. $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 6Đây là một phương pháp bí danh của 7.true if the element is not empty or not null or not an empty array or not an empty object.example: Giả sử bạn muốn tìm thấy có bao nhiêu phần tử trong thuộc tính _'Products'_. Bạn có thể làm điều đó như: 5Xem ví dụ chi tiết ở đây. $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 7
example: `cột` - tên thuộc tính của dữ liệu 6Xem ví dụ chi tiết ở đây. $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 8
`cột` - tên thuộc tính của dữ liệu This method should be used for plain Array. If you want to sort an Array of Objects you should use the sortBy() method described later. example: Giả sử bạn muốn tìm mức tối đa của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này: 7Xem ví dụ chi tiết ở đây. $result = $json->from('products') ->where('cat', '=', 2) ->sum('price'); dump($result); //It will print: /* 365000 */ 9
`cột` - tên thuộc tính của dữ liệu This method should be used for Array of Objects. If you want to sort a plain Array you should use the sort() method described earlier. example: Giả sử bạn muốn tìm mức tối đa của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này: 8Xem ví dụ chi tiết ở đây. [ { "id":1, "name":"Candy Wrapper", "value":500, }, { "id":2, "name":"Torch", "value":2000, } ] 00
Giả sử bạn muốn tìm mức tối thiểu của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này: Nếu dữ liệu bạn đang truy vấn là mảng đơn giản, bạn không cần phải vượt qua tham số 'thuộc tính'. Xem ví dụ chi tiết ở đây [ { "id":1, "name":"Candy Wrapper", "value":500, }, { "id":2, "name":"Torch", "value":2000, } ] 01Giả sử bạn muốn tìm mức trung bình của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này: Nếu dữ liệu bạn đang truy vấn là mảng đơn giản, bạn không cần phải vượt qua tham số 'thuộc tính'. Xem ví dụ chi tiết ở đây Giả sử bạn muốn tìm mức trung bình của _'Price'_ của _'Products'_. Bạn có thể làm điều đó như thế này:Nó sẽ trả về yếu tố đầu tiên của bộ sưu tập. Nó sẽ trả về yếu tố cuối cùng của bộ sưu tập. `index` - chỉ mục của phần tử được trả về.Nó sẽ trả về phần tử thứ n của bộ sưu tập. Nếu chỉ mục đã cho là một giá trị dương, nó sẽ trả về phần tử thứ n ngay từ đầu. Nếu chỉ mục đã cho là một giá trị âm, nó sẽ trả về phần tử thứ n từ cuối.
`order` - Nếu bạn bỏ qua thuộc tính _'order'_, dữ liệu sẽ được đặt hàng theo mặc định là tăng dần. Bạn cần truyền 'Desc' dưới dạng tham số _'order'_ để sắp xếp dữ liệu theo thứ tự giảm dần. Ngoài ra, bạn có thể chuyển một hàm so sánh trong tham số _'order'_ để xác định logic của riêng bạn để đặt hàng dữ liệu.Lưu ý: Phương pháp này nên được sử dụng cho mảng trơn. Nếu bạn muốn sắp xếp một mảng các đối tượng, bạn nên sử dụng phương thức SortBy () được mô tả sau. |