删除数值数组中的关联数组元素并清理数组重复项

时间:2011-12-31 10:56:24

标签: php arrays multidimensional-array

我正在尝试解决如何清理我的数组,我的输出应该是:

1)所有数字索引和

2)没有重复的值。

这是我当前数组输出的示例:

注意:索引[3]。我正在将这些值解析为一个新数组,并且不需要其中任何一个。如您所见,它们将合并到下面的数组中。

最终我正在为.csv格式准备这个,但我需要在某种类型的序列中使用我的数组,以便将数据保持在正确的表示形式。

Array // print_r();
(
    [0] => 3350
    [id] => 3350
    [1] => Williamson New England Electric
    [company] => Williamson New England Electric
    [2] => bob@jojozzz.go
    [email] => bob@jojozzz.go
    [3] => Pumps & Motors,Electronic Systems,Electrical Supply,Electrical 
    [industry] => Pumps & Motors,Electronic Systems,Electrical Supply,Electrical 
    [4] => Pumps & Motors
    [5] => Electronic Systems
    [6] => Electrical Supply
    [7] => Electrical 
)

这就是我想要实现的目标:

Array
(
    [0] => 3350
    [1] => Williamson New England Electric
    [2] => bob@jojozzz.go
    [4] => Pumps & Motors
    [5] => Electronic Systems
    [6] => Electrical Supply
    [7] => Electrical 
)

3 个答案:

答案 0 :(得分:2)

请参阅Felix的评论,了解如何在源代码中以正确的格式获取阵列。如果那不可能,那就行了;

$array = Array(
  '0' => 3350,
  'id' => 3350,
  '1' => 'Williamson New England Electric',
  'company' => 'Williamson New England Electric',
  '2' => 'bob@jojozzz.go',
  'email' => 'bob@jojozzz.go',
  '3' => 'Pumps & Motors,Electronic Systems,Electrical Supply,Electrical ',
  'industry' => 'Pumps & Motors,Electronic Systems,Electrical Supply,Electrical ',
  '4' => 'Pumps & Motors',
  '5' => 'Electronic Systems',
  '6' => 'Electrical Supply',
  '7' => 'Electrical'
);

$outputArray = array_values( $array );
$uniqueArray = array_unique( $outputArray );

var_dump( $uniqueArray );

答案 1 :(得分:2)

正如我在评论中所说,如果从MySQL数据库中获取数据,那么从一开始就可以更容易地将数组作为数值数组:

$row = mysql_fetch_row($result);

然后您可以执行以下操作来拆分最后一列的值:

array_splice($row, -1, 1, explode(',', end($row)));

DEMO

答案 2 :(得分:0)

不能保证性能,但你可以使用is_numeric来确保(#1)只有数字索引,并使用array_unique来确保(#2)没有重复:

$b = filterNonNumericKeysInArray($a);
$b = array_unique($b);

function filterNonNumericKeysInArray($arr) {
    $finalArr = Array();

    foreach ($arr as $key => $val) {
        if (!is_numeric($key)) { continue; }

        $finalArr[$key] = $val;
    }

    return $finalArr;
}