【问题标题】:PHP Array Remove Duplicates - not Array_UniquePHP 数组删除重复项 - 不是 Array_Unique
【发布时间】:2016-06-18 00:42:33
【问题描述】:

我在 PHP 中有一个多维数组(假数据):

Array
(
[0] => Array
    (
        [pmkSuppliers] => 1
        [0] => 1
        [Name] => Supplier2
        [1] => Supplier2
        [Email] => Me@me.com2
        [2] => Me@me.com2
        [Address] => 624  st
        [3] => 624 st
        [Phone] => 900-111-1111
        [4] => 900-111-1111
        [Fax] => 900-111-1112
        [5] => 900-111-1112
        [TechSupport] => 900-111-1112
        [6] => 900-111-1112
        [Contact] => Greg
        [7] => Greg
        [Modified] => 2016-06-07
        [8] => 2016-06-07
    )

[1] => Array
    (
        [pmkSuppliers] => 2
        [0] => 2
        [Name] => Nike
        [1] => Nike
        [Email] => me@none.com
        [2] => me@none.com
        [Address] => 4566 way
        [3] => 4566 way
        [Phone] => 901-206-5555
        [4] => 901-206-5555
        [Fax] => 901-206-5555
        [5] => 901-206-5555
        [TechSupport] => 901-206-5445
        [6] => 901-206-5445
        [Contact] => Brad
        [7] => Brad
        [Modified] => 2016-06-08
        [8] => 2016-06-08
    )

)

我想用非 int 键删除所有元素。所以它看起来像这样:

Array
(
[0] => Array
    (
        [0] => 1
        [1] => Supplier2
        [2] => Me@me.com2
        [3] => 624 st
        [4] => 900-111-1111
        [5] => 900-111-1112
        [6] => 900-111-1112
        [7] => Greg
        [8] => 2016-06-07
    )

[1] => Array
    (
        [0] => 2
        [1] => Nike
        [2] => me@none.com
        [3] => 4566 way
        [4] => 901-206-5555
        [5] => 901-206-5555
        [6] => 901-206-5555
        [7] => Brad
        [8] => 2016-06-08
    )

 )

我认为必须有一个简单的方法来做到这一点,但我被困住了。我不能使用 PHP 方法 array_unique 因为有时我的数组中的值是相同的(就像在第二组中一样)。

如果有人能指出我正确的方向,那就太棒了。

谢谢,
FP

编辑

这就是我一直在做的,但它看起来很粗糙。

foreach ($array as $insideArray) {
    foreach ($insideArray as $key => $value) {
        if (!is_int($key)) {
            echo $value;
        }
    }
}

【问题讨论】:

  • 您是否使用 PDO 获取此内容?
  • 你可以尝试使用is_numeric+array_flip
  • @Thamilan 是的,绕道而行。
  • 然后,只需将 fetch 样式更改为 PDO::FETCH_NUM。我可以看看你的获取代码吗?
  • @SML 我认为你的方式会奏效,但我不确定它是否会比我一直这样做的方式更优雅/高效。 (见我的编辑)。

标签: php arrays


【解决方案1】:

如果您使用 PDO,只需设置 fetch 样式:

$statement->setFetchMode(PDO::FETCH_NUM);

你可以在manual看到不同的fetchStyle。


另外,你还可以使用

$statement->fetchAll(PDO::FETCH_COLUMN);

这是一个外部的article 1article 2,讨论了不同的获取方法。

【讨论】:

    【解决方案2】:
    foreach ($array as &$arr){
        foreach ($arr as $key => $value) {
        if (!is_int($key)) {
            unset($arr[$key]);
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多