【问题标题】:Removing duplicate columns from an array with built-in functions使用内置函数从数组中删除重复列
【发布时间】:2015-11-04 22:13:53
【问题描述】:

我需要根据第 0 个位置的元素从以下数组中删除一些项目。

Big_array(256) {
  [0] => array(6) {
    [0] => string(4) "Data"
    [1] => string(15) "Ext_EBCS01_Cota"
    [2] => string(3) "CDI"
    [3] => string(3) "CDI"
    [4] => string(6) "IPCAdp"
    [5] => string(6) "IPCAdp"
  }
  [1]=> array(6) {
    [0] => string(10) "2014-05-05"
    [1] => int(100)
    [2] => int(100)
    [3] => int(100)
    [4] => int(100)
    [5] => int(100)
  }
  [2]=> array(6) {
    [0] => string(10) "2014-05-06"
    [1] => float(99.04321866850199)
    [2] => float(100.040705)
    [3] => float(100.040705)
    [4] => float(100.0218569233119)
    [5] => float(100.0218569233119)
  }

例如,Big_array 在其第 0 个元素上有一些重复值,它们是:

  1. $Big_array[0][3]
  2. $Big_array[0][5]

基于我需要删除的重复元素的索引:

  1. $Big_array[0][3]
  2. $Big_array[1][3]
  3. $Big_array[2][3]
  4. $Big_array[0][5]
  5. $Big_array[1][5]
  6. $Big_array[2][5]

剩余的数组应该被重新索引,并且它们的键按如下顺序排列:

Big_array(256) {
  [0] => array(6) {
    [0] => string(4) "Data"
    [1] => string(15) "Ext_EBCS01_Cota"
    [2] => string(3) "CDI"
    [3] => string(6) "IPCAdp"
  }
  [1] => array(6) {
    [0] => string(10) "2014-05-05"
    [1] => int(100)
    [2] => int(100)
    [3] => int(100)
  }
  [2] => array(6) {
    [0] => string(10) "2014-05-06"
    [1] => float(99.04321866850199)
    [2] => float(100.040705)
    [3] => float(100.0218569233119)

有没有内置的 PHP 函数可以做到这一点?

【问题讨论】:

标签: php arrays function


【解决方案1】:

我认为没有内置函数可以一次性完成所有操作,但您可以结合使用一些数组函数和 foreach 循环:

<?php
$repeatedIndexes = array_diff_key($Big_array[0], array_unique($Big_array[0]));

foreach($Big_array as &$value) {
    $value = array_values(array_diff_key($value, $repeatedIndexes));
}
unset($value);

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2020-12-31
    • 2014-07-31
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多