You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用foreach遍历JSON解码数组并提取各主数组ID

遍历数组提取ID值的解决方案

嘿,我来帮你搞定这个遍历提取ID的需求!先把你的数组结构格式化得更清晰些,方便我们理解:

$productArray = [
    'id' => 7.8803211967429E+17,
    'title' => 'Example T-Shirt',
    'body_html' => '',
    'variants' => [
        [
            'id' => 6.4266704147271E+17
        ],
        [
            'id' => 7.576504846442E+17,
            'product_id' => 7.8803211967429E+17
        ]
    ],
    'options' => [
        []
    ]
];

接下来分两种场景给你解决方案:

1. 只需要外层主数组的ID

如果只是要拿最外层的id,根本不用遍历,直接访问就行:

$mainProductId = $productArray['id'];
echo "主产品ID: " . $mainProductId . "\n";

2. 提取所有层级的ID(主数组+所有变体的ID)

要是你需要把主产品ID和variants里每个变体的ID都捞出来,就结合直接访问和foreach遍历,还得加些安全判断避免报错:

// 用来存所有ID的数组
$allIds = [];

// 先把主产品ID加进去
$allIds[] = $productArray['id'];

// 遍历变体数组,提取每个变体的ID
if (!empty($productArray['variants']) && is_array($productArray['variants'])) {
    foreach ($productArray['variants'] as $variant) {
        // 先检查这个变体有没有id键,防止报错
        if (isset($variant['id'])) {
            $allIds[] = $variant['id'];
        }
    }
}

// 输出所有提取到的ID
echo "所有提取到的ID:\n";
foreach ($allIds as $id) {
    echo "- " . $id . "\n";
}

小提示:

  • 加!empty()和is_array()判断是为了防止variants是空或者不是数组的情况,避免遍历出错
  • isset()检查变体的id键,是怕某个变体数据不完整,没有id字段导致警告
  • 把所有ID存到一个数组里,后续不管是要存数据库还是做其他处理都方便

运行这段代码后,你会得到这样的输出:

主产品ID: 7.8803211967429E+17
所有提取到的ID:
- 7.8803211967429E+17
- 6.4266704147271E+17
- 7.576504846442E+17

对了,顺便提一句:你原始代码里file_get_contents的URL没加协议(应该是https://imarasoft.net/imarasoft/abd/WebHook/response.txt),如果之前拿JSON的时候遇到问题,记得补上哦!

内容的提问来源于stack exchange,提问作者Abdul Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:26:15