转换PHP数组$key=>$价值转换为$value=>;下一个$value

转换PHP数组$key=>$价值转换为$value=>;下一个$value,php,arrays,Php,Arrays,我真的不知道如何表达这个问题,所以我只写代码 我希望能够转换此阵列: Array ( [SELECT0] => 'orange' [INPUT0] => '100' [SELECT1] => 'bannana' [INPUT1] => '200' [SELECT2] => 'apple' [INPUT2] => '300' ) Array ( [orange] => '100' [bann

我真的不知道如何表达这个问题,所以我只写代码

我希望能够转换此阵列:

Array
(
    [SELECT0] => 'orange'
    [INPUT0] => '100'
    [SELECT1] => 'bannana'
    [INPUT1] => '200'
    [SELECT2] => 'apple'
    [INPUT2] => '300'
)
Array
(
    [orange] => '100'
    [bannana] => '200'
    [apple] => '300'
)
在该阵列中:

Array
(
    [SELECT0] => 'orange'
    [INPUT0] => '100'
    [SELECT1] => 'bannana'
    [INPUT1] => '200'
    [SELECT2] => 'apple'
    [INPUT2] => '300'
)
Array
(
    [orange] => '100'
    [bannana] => '200'
    [apple] => '300'
)
*如果您知道如何正确表达此问题,请编辑此问题标题:)

我的真实阵列是:

array(12) {
  ["SELECT0"]=>
  string(3) "000"
  ["INPUT0"]=>
  string(2) "50"
  ["SELECT1"]=>
  string(3) "000"
  ["INPUT1"]=>
  string(3) "150"
  ["SELECT2"]=>
  string(4) "5260"
  ["INPUT2"]=>
  string(3) "200"
  ["SELECT3"]=>
  string(4) "5261"
  ["INPUT3"]=>
  string(3) "300"
  ["SELECT4"]=>
  string(3) "000"
  ["INPUT4"]=>
  string(3) "400"
  ["SELECT5"]=>
  string(4) "5262"
  ["INPUT5"]=>
  string(3) "500"
}

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

$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];
}

假设格式永远不会改变

$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
$new=array()//启动新阵列
$count=计数($array)/2//获取要循环的项目数
对于($i=0;$i<$count;$i++){//循环
$k='SELECT'.$i;//键
$v='INPUT'.$i;//值
$new[$array[$k]]=$array[$v];//创建新数组
}
印刷(新)//显示

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

$result = array_combine(...array_map(null, ...array_chunk($array, 2)));
array\u chunk
为您提供

[
    ['orange', '100'],
    ['banana', '200'],
    ['apple', '300']
];
array\u map
将其转换为:

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

哪个可以直接输入到
array\u列

您已经做了什么来解决这个问题了吗?我们能看到代码和失败的地方吗?我还在尝试,甚至没有任何东西开始工作:)我想我不完全理解你的答案。我试图使用第一个短代码,我得到了正确的格式,但由于某种原因,它不会返回所有值,只返回一些值,而且顺序很奇怪……我真正的数组是
array(12){[“SELECT0”]=>string(3)“000”[“INPUT0”]=>string(2)“50”[“SELECT1”]=>string(3)“000”[“INPUT1”]=>string(3)“150”[“SELECT2”]=>字符串(4)“5260”[“INPUT2”]=>字符串(3)“200”[“SELECT3”]=>字符串(4)“5261”[“INPUT3”]=>字符串(3)“300”[“SELECT4”]=>字符串(3)“000”[“INPUT4”]=>字符串(3)“400”[“SELECT5”=>字符串(4)“5262”[“INPUT5”]=>字符串(3)“500”
我从您的代码中得到的是:
array(4){“000”=>字符串(3)“400”[5260]=>字符串(3)“200”[5261]=>字符串(3)“300”[5262]=>字符串(3)“500”}
是的,这是因为PHP数组不能有重复的键,所以你不能真正从输入数组中获得你想要的结构而不丢失数据。因为你不能有多个“000”键,你只能得到最后一个值。我相信你在其他任何答案上都会遇到同样的问题。谢谢你l、 不要惊慌的答案更短,所以我觉得好一点。谢谢你,蒂姆。不要惊慌的答案更短,所以我觉得好一点。