转换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、 不要惊慌的答案更短,所以我觉得好一点。谢谢你,蒂姆。不要惊慌的答案更短,所以我觉得好一点。