我需要帮助操纵我的二维数组。我的数组有许多带有2列值的记录集,我想操纵数组,因此有一个包含一列的许多记录集的数组,将我的一个原始列作为键转换为一列值。 我的阵列:
[0]=>
[0]=> "48903"
[1]=> "SDFI"
[1]=>
[0]=> "2890"
[1]=> "DISL"
[2] =>
[0]=> "80890"
[1]=> "DISL"
...plus more
预期数组:
[0]=>
[48903]= "SDFI"
[2890]=>"DISL"
[80890] => "DISL"
...plus more
我尝试使用预期的键创建一个新数组,然后取消设置子数组,但是当新数组在脚本结尾处进行vardump时,它仍然显示它们的子数组尚未被删除。 我的实验代码
$newarr=array();
foreach($arr as $val => $rename){
$newarr[$rename[0]]= $rename;
}
foreach($newarr as $k => $v){
unset($v[0]); //does not remove/unset the extra column when newarr is var_dumped at the end of the script
$filter = array_filter($newarr, function($k) {
return $k == '1'; }); //or return $k !== 0; }) // other code to filter extra column that does not seem to work.
我认为我遇到了来自其他人的类似问题,但他们每个记录集有3列,并希望将列数减少到2并将额外列更改为键。但是,我似乎无法找到该页面。如果有人能找到并发布链接,那就太棒了。
任何帮助都会很棒..提前谢谢你。
答案 0 :(得分:0)
试试这个:
<?php
// the function:
function arr2kv($arr) {
$res = array();
foreach($arr as $v) $res[$v[0]] = $v[1];
return $res;
}
// testing:
$n = array(
array("48903","SDFI"),
array("2890","DISL"),
array("80890","DISL")
);
print_r( arr2kv($n) );
/* // result:
Array
(
[48903] => SDFI
[2890] => DISL
[80890] => DISL
)
*/
答案 1 :(得分:0)
试试这个 -
$newarr=array();
foreach($arr as $val => $rename){
$newarr[$rename[0]]= $rename[1];
}