2012-03-23 139 views
0

我有for cycle有我创造的名字从名单中的数组,我需要做的就是删除重复值,然后我得到这个数组:删除重复的元素

阵列([0] =>托德[1] =>管理[2] => TOD)

$c=count($_SESSION['cart']); 

$list_array = array(); 

    for($i=0;$i<$c;$i++){ 
    $id=$_SESSION['list'][$i]['id']; 
    $person=get_person($id); 

    $list_array[] = $person; 
} 

回答

2

使用array_unique,它返回没有重复值的新数组。

$input = array("a" => "green", "red", "b" => "green", "blue", "red"); 
$result = array_unique($input); 

输出

Array 
(
    [a] => green 
    [0] => red 
    [1] => blue 
) 

Check it out here.

但是,你需要移动$list_arrayfor循环之外,并使用你的条件语句等,使得阵列,

$c=count($_SESSION['cart']); 

// if this is in the loop, it will get overwritten 
$list_array = array(); 

for($i=0;$i<$c;$i++){ 
    $id=$_SESSION['list'][$i]['id']; 
    $person=get_person($id); 

    // originally, you had $users_array in in_array and array_push 
    if(!in_array($person, $list_array)) 
     $list_array[] = $person; 

} 
+0

也指这样的:[PHP :: array_unique为内部阵列阵列(http://stackoverflow.com/questions/5211900/php-array-unique-for-arrays-inside - 阵列) – Panagiotis 2012-03-23 15:10:37

+0

我试图使用此之前,但仍然获得重复的值 – darius 2012-03-23 15:13:16

+0

如果我添加[0]我只得到名字的第一个字母 – darius 2012-03-23 15:21:40

0

in_array在传递数组时检查字符串。与array_unique一样 - 它不打算检查多维数组。这样一个修补程序将是

$person=get_person($id)[0]; 
+0

只要OP有PHP 5.4 – Josh 2012-03-23 15:22:50

+0

这会导致一个错误.. get_person是一个简单的函数,用mysql查询然后通过周期来收集结果。 'function get_person($ id){ \t \t $ result = mysql_query(“select person from list where id = $ id”); \t \t mysql_set_charset(“UTF8”); \t \t $ row = mysql_fetch_array($ result); \t \t return $ row ['person']; \t}' – darius 2012-03-23 15:22:57

+0

'return $ row ['person'] [0];'then?我的意思是,如果你推送的单个$ person等于'Array([0] => Tod)',那么显然你不能期望列表被清理和正确检查 – 2012-03-23 15:26:04