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

PHP如何将数组子元素的索引1值作为键、索引0值作为对应值?

PHP数组转换:将子数组元素反转作为键值对

嘿,我来帮你搞定这个数组转换的问题!你的需求很明确:把原数组里每个子数组的第二个元素(索引1)转成整数作为新数组的键,第一个元素(索引0)作为对应的值。你之前尝试用array_values和array_combine没成功,大概率是因为没正确提取出要作为键和值的两个独立数组,下面给你几种可行的实现方法:

方法一:foreach循环(最直观易懂)

这是最适合新手的写法,逻辑清晰一目了然:

$arrayIn = [ [ 0 => "3", 1 => "12345" ], [ 0 => "2", 1 => "123" ] ];
$arrayOut = [];

foreach ($arrayIn as $item) {
    // 把索引1的字符串值转成整数作为键,索引0的值作为对应值
    $arrayOut[(int)$item[1]] = $item[0];
}

print_r($arrayOut);
// 输出:Array ( [12345] => 3 [123] => 2 )

方法二:array_reduce函数(函数式写法)

如果喜欢更简洁的函数式编程风格,可以用array_reduce来迭代构建新数组:

$arrayIn = [ [ 0 => "3", 1 => "12345" ], [ 0 => "2", 1 => "123" ] ];

$arrayOut = array_reduce($arrayIn, function($carry, $item) {
    $carry[(int)$item[1]] = $item[0];
    return $carry;
}, []);

print_r($arrayOut);
// 输出结果和上面一致

方法三:array_map + array_combine(你的思路优化版)

既然你想用array_combine,那我们只需要先分别提取出键数组和值数组,再组合起来就行:

$arrayIn = [ [ 0 => "3", 1 => "12345" ], [ 0 => "2", 1 => "123" ] ];

// 提取要作为键的数组:每个子数组的索引1值,转成整数
$keys = array_map(function($item) {
    return (int)$item[1];
}, $arrayIn);

// 提取要作为值的数组:每个子数组的索引0值
$values = array_map(function($item) {
    return $item[0];
}, $arrayIn);

// 用array_combine组合键和值
$arrayOut = array_combine($keys, $values);

print_r($arrayOut);
// 输出同样符合预期

这三种方法都能完美得到你想要的$arrayOut,你可以根据自己的代码风格选择合适的写法~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:14:32