php提取json中的数组元素,如何从PHP中的多维JSON字符串数组中获取元素的值

这篇博客提供了两种PHP从多维JSON字符串数组中提取id的方法。第一种使用`foreach`和`json_decode`,第二种利用`array_column`和`array_map`配合`json_decode`获取元素的id。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

希望这个简单的foreach对您有所帮助。

解决方案1:Try this code snippet here

$result=array();

foreach($array as $value)

{

$array= json_decode($value["product_details"],true);

$result[]=$array[key($array)]["id"];

}

print_r($result);这里我们使用array_column来提取product_details然后我们使用array_map迭代$personalDetails,其中包含所有JSON然后我们使用key函数,它将返回数组的第一个键,并通过我们正在访问的那个键,它的id。

解决方案2:Try this code snippet here

ini_set('display_errors', 1);

$array = Array

(

0 => Array

(

"product_details" => '{"5f93f983524def3dca464469d2cf9f3e":{"id":"110","qty":1,"option":"{\"color\":{\"title\":\"Color\",\"value\":null}}","price":1400,"name":"Foot Massage","tax":null,"image":"http:\/\/acme.dev\/uploads\/product_image\/product_110_1_thumb.jpg","coupon":"9","book_date_":"2017-04-19","book_date_name_":"wed","start_timeslot_":"09:00:00","end_timeslot_":"10:00:00","has_already_rescheduled":0,"discount_":"0","rowid":"5f93f983524def3dca464469d2cf9f3e","subtotal":1400}}'

),

1 => Array

(

"product_details" => '{"2723d092b63885e0d7c260cc007e8b9d":{"id":"109","qty":1,"option":"{\"color\":{\"title\":\"Color\",\"value\":null}}","price":700,"name":"Body Massage","tax":0,"image":"http:\/\/acme.dev\/uploads\/product_image\/product_109_1_thumb.jpg","coupon":"","book_date_":"2017-04-18","book_date_name_":"tue","start_timeslot_":"09:00:00","end_timeslot_":"10:00:00","has_already_rescheduled":0,"discount_":"0","rowid":"2723d092b63885e0d7c260cc007e8b9d","subtotal":700}}'

),

2 => Array

(

"product_details" => '{"a3c65c2974270fd093ee8a9bf8ae7d0b":{"id":"108","qty":1,"option":"{\"color\":{\"title\":\"Color\",\"value\":null}}","price":3000,"name":"Alo","tax":0,"image":"http:\/\/acme.dev\/uploads\/product_image\/default.jpg","coupon":"","book_date_":"2017-04-21","book_date_name_":"fri","start_timeslot_":"10:00:00","end_timeslot_":"12:00:00","has_already_rescheduled":0,"discount_":"0","rowid":"a3c65c2974270fd093ee8a9bf8ae7d0b","subtotal":3000}}'

),

3 => Array

(

"product_details" => '{"a3c65c2974270fd093ee8a9bf8ae7d0b":{"id":"108","qty":1,"option":"{\"color\":{\"title\":\"Color\",\"value\":null}}","price":3000,"name":"Alo","tax":0,"image":"http:\/\/acme.dev\/uploads\/product_image\/default.jpg","coupon":"","book_date_":"2017-04-12","book_date_name_":"wed","start_timeslot_":"08:00:00","end_timeslot_":"10:00:00","has_already_rescheduled":0,"discount_":"0","rowid":"a3c65c2974270fd093ee8a9bf8ae7d0b","subtotal":3000}}'

)

);

$personalDetails= array_column($array, "product_details");

$result=array_map(function($value){

$array=json_decode($value,true);

return $array[key($array)]["id"];

}, $personalDetails);

print_r($result);输出:

Array

(

[0] => 110

[1] => 109

[2] => 108

[3] => 108

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值