操纵,删除或取消设置多维数组的子数组

时间:2015-01-29 06:09:58

标签: php arrays multidimensional-array unset

我需要帮助操纵我的二维数组。我的数组有许多带有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并将额外列更改为键。但是,我似乎无法找到该页面。如果有人能找到并发布链接,那就太棒了。

任何帮助都会很棒..提前谢谢你。

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