如何将子数组的首个元素值设为该子数组在父数组中的键?
解决方案:将数组键替换为子数组的指定元素值
当然可以实现这个需求!下面给你两种简单易懂的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
相关产品推荐
相关产品推荐

