用非重复键值填充数组php

时间:2014-04-29 13:42:00

标签: php arrays

我正面对这个问题,可能这很愚蠢......但是我们走了:

我有一个常规的预告:

 foreach $values as $values => $key {
   $test[] = $key;
 }

当然,测试是在循环外定义的。

现在,这会返回如下内容:

 array(6) {
 [0]=> int(10)
 [1]=> int(16)
 [2]=> int(10)
 [3]=> int(16)
 [4]=> int(10)
 [5]=> int(16)
 [6]=> int(10)
 }

但是,我需要忽略重复的值,所以测试将是这样的:

 array(2) {
 [0]=> int(10)
 [1]=> int(16)
 }

只有在不重复的情况下才会添加新值。我已经尝试过array_unique和array_values但是我没有使用如果我实现它们不好或者问题是什么......

任何帮助将不胜感激。

最诚挚的问候。

5 个答案:

答案 0 :(得分:2)

如果您只想添加值,如果它不存在,请使用in_array()

 $test=array();
    // organize the array by cusip
    foreach ($values as $values => $key) { 
            if(!in_array($key, $test)){
            $test[]=$value;
            }    
    }

答案 1 :(得分:1)

为什么不使用array_unique()

考虑这个例子:

$values = array_unique($values);

或者如果您不想使用array_unique(),可以采用其他方式:

foreach ($values as $index => $element) {
    if(!in_array($element, $values)) {
        $test[] = $element;
    } 
}

答案 2 :(得分:1)

如何使用 array_unique 分配数组:

<?php
    $x = array
    (
        0 => 'int(10)',
        1 => 'int(16)',
        2 => 'int(10)',
        3 => 'int(16)',
        4 => 'int(10)',
        5 => 'int(16)',
        6 => 'int(10)'
    );

    $x = array_unique($x);
    print_r($x);
?>

这将输出

Array
(
    [0] => int(10)
    [1] => int(16)
)

答案 3 :(得分:1)

如果array_unique以某种方式不适合您,您可以使用:

<?php
foreach( $values as $values => $key ){
   if( !in_array($key, $test) )
      $test[] = $key;
}
?>

答案 4 :(得分:0)

这里你的数组是

$test = array(6) {
 [0]=> int(10)
 [1]=> int(16)
 [2]=> int(10)
 [3]=> int(16)
 [4]=> int(10)
 [5]=> int(16)
 [6]=> int(10)
 }

您可以使用array_unique($test)来删除重复值。