我正在使用php解码JSON文件并尝试仅从ID为1234
的数组中获取内容。
例如:
[
{
"id":"1234",
"is_printed":"1",
"is_refunded":"1",
"order_products":[
{
"id":"xyz",
"order_id":"xyz",
"date_created":"3434"
}
]
},
{
"id":"8910",
"is_printed":"1",
"is_refunded":"1",
"order_products":[
{
"id":"abcde",
"order_id":"abcde",
"date_created":"3434"
}
]
}
]
我想从order_id
只检索身份order_products
的地方检索1234
。
所以我应该只获得xyz
而不是xyz
和abcde
。
答案 0 :(得分:0)
你可以循环然后获得你想要的那些,确保你正确检查水平:
$jv = json_decode($v);
foreach ($jv as $t) {
if ($t->id == 1234) {
print $t->order_products[0]->order_id;
}
}
注意我首先使用json_decode()
将JSON字符串$v
转换为php可以处理的内容。
知道print $t->order_products[0]->order_id;
是要查看的索引的方法是什么?好吧,我拿了你的JSON和var_dump
编辑它。然后,通过遵循输出结构,您可以看到您需要的确切索引。
查看包含数据的完整工作代码:
$v=' [
{
"id":"1234",
"is_printed":"1",
"is_refunded":"1",
"order_products":[
{
"id":"xyz",
"order_id":"xyz",
"date_created":"3434"
}
]
},
{
"id":"8910",
"is_printed":"1",
"is_refunded":"1",
"order_products":[
{
"id":"abcde",
"order_id":"abcde",
"date_created":"3434"
}
]
}
]';
$jv = json_decode($v);
foreach ($jv as $t) {
if ($t->id == 1234) {
print $t->order_products[0]->order_id;
}
}
var_dump($jv);
它返回:
输出:
xyz
转储:
array(2) {
[0]=>
object(stdClass)#1 (4) {
["id"]=>
string(4) "1234"
["is_printed"]=>
string(1) "1"
["is_refunded"]=>
string(1) "1"
["order_products"]=>
array(1) {
[0]=>
object(stdClass)#2 (3) {
["id"]=>
string(3) "xyz"
["order_id"]=>
string(3) "xyz"
["date_created"]=>
string(4) "3434"
}
}
}
[1]=>
object(stdClass)#3 (4) {
["id"]=>
string(4) "8910"
["is_printed"]=>
string(1) "1"
["is_refunded"]=>
string(1) "1"
["order_products"]=>
array(1) {
[0]=>
object(stdClass)#4 (3) {
["id"]=>
string(5) "abcde"
["order_id"]=>
string(5) "abcde"
["date_created"]=>
string(4) "3434"
}
}
}
}
答案 1 :(得分:0)
你可以使用foreach并循环数组
foreach ($yourArray AS $rowInArray) {
if ($rowInArray['id'] == 1234 {
//save the value to a global array
}
}
其他选项是使用" array_column()"功能。我之前没有使用过这个,但你可以在这里找到与语法相关的信息:http://php.net/manual/en/function.array-column.php
答案 2 :(得分:0)
使用以前的所有答案都有完整的代码:
$orderId = array();
$data = json_decode($jsonString);
foreach ($data as $row) {
if ($row['id'] == 1234) {
$orderId[] = $row['order_products']['order_id'];
}
}