PHP数组删除重复项 - 而不是Array_Unique

时间:2016-06-18 00:42:33

标签: php arrays

我在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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果您使用的是PDO,只需设置获取样式:

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

您可以在manual中看到差异fetchStyle。

此外,您还可以使用

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

以下是讨论不同获取方法的外部article 1article 2

答案 1 :(得分:0)

foreach ($array as &$arr){
    foreach ($arr as $key => $value) {
    if (!is_int($key)) {
        unset($arr[$key]);
    }
  }
}