将关联数组的每两个值转换为键值对

Convert every two values of an associative array into key-value pairs

我需要将一个关联数组转换为一个新的关联数组,其中原始键被忽略,每两个连续值成为新的键值对。

输入:

Array
(
    [SELECT0] => 'orange'
    [INPUT0] => '100'
    [SELECT1] => 'bannana'
    [INPUT1] => '200'
    [SELECT2] => 'apple'
    [INPUT2] => '300'
)

期望的输出:

Array
(
    [orange] => '100'
    [bannana] => '200'
    [apple] => '300'
)

您需要做的就是遍历所有数组值,然后将每个奇数作为键,将下一个索引作为值。

$arr = [
    'SELECT0' => 'orange',
    'INPUT0' => '100',
    'SELECT1' => 'bannana',
    'INPUT1' => '200',
    'SELECT2' => 'apple',
    'INPUT2' => '300'
];

$arr = array_values($arr);
$newData = [];
for ($i = 0; $i < count($arr); $i++) {
    $newData[$arr[$i]] = $arr[++$i];
}

现在 $newData 包含这个:

Array
(
    [orange] => 100
    [bannana] => 200
    [apple] => 300
)

假设格式永远不会改变...

$new=array();//start a new array
$count=count($array)/2; //get the number of items to loop through


for ($i = 0; $i < $count; $i++) { //loop

$k='SELECT'.$i; //key
$v='INPUT'.$i; //value

$new[$array[$k]]=$array[$v]; //create new array

}

print_r($new); //display

这是组合三个 PHP 数组函数的一种方法:

$result = array_combine(...array_map(null, ...array_chunk($array, 2)));

array_chunk 给你

[
    ['orange', '100'],
    ['banana', '200'],
    ['apple', '300']
];

array_map 将其转换为:

[
    ['orange', 'banana', 'apple'],
    ['100', '200', '300'],
];

可以直接输入 array_column

  1. 使用 array_values()
  2. 从输入数组中删除无用的原始键
  3. 将数据分组为 2 元素子数组
  4. 迭代paris并使用“数组解构”临时声明$newKey,然后使用$newKey将相关值推入结果数组。不需要 foreach 的主体。

代码:(Demo)

$result = [];
foreach (array_chunk(array_values($arr), 2) as [$newKey, $result[$newKey]]);
var_export($result);

输出:

array (
  'orange' => '100',
  'bannana' => '200',
  'apple' => '300',
)