【问题标题】:manipulate, delete or unset subarray of a multidimensional array操作、删除或取消设置多维数组的子数组
【发布时间】:2015-03-28 06:48:25
【问题描述】:

我需要帮助来处理我的二维数组。我的数组有许多包含 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

我尝试使用预期的键创建一个新数组,然后取消设置子数组,但是当新数组在脚本末尾被 vardumped 时,它仍然显示它们的子数组尚未被删除。 我的实验代码

$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 并将额外的列更改为键。但是,我似乎无法找到该页面。如果有人能找到它并发布链接,那就太好了。

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

【问题讨论】:

  • 没有人能告诉我为什么取消设置值或数组过滤器不起作用?

标签: php arrays multidimensional-array unset


【解决方案1】:

试试这个:

<?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
    )
*/

【讨论】:

    【解决方案2】:

    试试这个 -

    $newarr=array();
    foreach($arr as $val => $rename){
          $newarr[$rename[0]]= $rename[1];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 2015-09-30
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多