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

如何将子数组的首个元素值设为该子数组在父数组中的键?

解决方案:将数组键替换为子数组的指定元素值

当然可以实现这个需求!下面给你两种简单易懂的PHP实现方式,都能快速把你给出的数组转换成目标格式:

方法一:使用array_reduce函数(简洁函数式写法)

array_reduce可以帮我们遍历数组并逐步构建新数组,代码非常简洁:

$originalArray = [
    ['symbol' => 'ETHBTC', 'status' => 'TRADING'],
    ['symbol' => 'LTCBTC', 'status' => 'TRADING']
];

$transformedArray = array_reduce($originalArray, function($carry, $item) {
    // 提取symbol作为新键,仅保留status字段组成新值
    $carry[$item['symbol']] = ['status' => $item['status']];
    // 如果你想保留子数组除symbol外的所有字段,可以替换成下面两行:
    // $key = $item['symbol'];
    // unset($item['symbol']);
    // $carry[$key] = $item;
    return $carry;
}, []);

print_r($transformedArray);

运行后输出就是你想要的格式:

Array
(
    [ETHBTC] => Array
        (
            [status] => TRADING
        )

    [LTCBTC] => Array
        (
            [status] => TRADING
        )

)

方法二:使用foreach循环(直观易读,适合新手理解)

如果你觉得函数式写法有点绕,用基础的foreach循环也完全可以,逻辑更直白:

$originalArray = [
    ['symbol' => 'ETHBTC', 'status' => 'TRADING'],
    ['symbol' => 'LTCBTC', 'status' => 'TRADING']
];

$transformedArray = [];
foreach ($originalArray as $item) {
    // 直接赋值,把symbol作为键,status组成的数组作为值
    $transformedArray[$item['symbol']] = ['status' => $item['status']];
    // 同样,要保留子数组除symbol外的所有字段,用:
    // $key = $item['symbol'];
    // unset($item['symbol']);
    // $transformedArray[$key] = $item;
}

print_r($transformedArray);

这两种方法都能完美实现你的需求,你可以根据自己的代码习惯选择~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:24:16