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

如何用foreach循环获取嵌套数组中所有category_name键值?

解决多层数组中遍历所有category_name并拼接输出的问题

嘿,我来帮你搞定这个foreach循环的问题!你当前的代码只能处理最多两层数组的情况,要是数组有更深的嵌套,就会漏掉后面的category_name值。要实现输出所有层级的category_name并用->连接,最通用的办法是用递归函数来遍历整个数组结构。

具体解决方案

我们可以先写一个递归函数来收集所有层级的category_name值,之后再把它们拼接起来:

// 递归收集所有category_name的函数
function collectCategoryNames($array) {
    $names = [];
    foreach ($array as $key => $value) {
        // 找到category_name键,把值加入数组
        if ($key === 'category_name') {
            $names[] = $value;
        } elseif (is_array($value)) {
            // 遇到子数组就递归处理,合并结果
            $names = array_merge($names, collectCategoryNames($value));
        }
    }
    return $names;
}

// 调用函数并拼接输出
$categoryNames = collectCategoryNames($tmpArray);
echo implode('->', $categoryNames);

代码说明

  • 递归函数collectCategoryNames会遍历数组的每一个元素:
    • 如果当前键是category_name,就把对应的值存入结果数组;
    • 如果当前值是子数组,就递归调用自己处理子数组,把子数组里的category_name也收集回来;
  • 最后用implode('->', $categoryNames)把所有收集到的名字用->连接,就能得到你想要的Vasıta->Bmw X Serisi->Deneme格式的输出。

这种方式不管你的数组嵌套多少层都能正常工作,比固定层数的foreach更灵活可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:49