2016-11-30 69 views
1

我想删除重复的表格foreach但它不起作用。 我知道我可以用SQL来做到这一点,但我需要使用PHP。删除重复从foreach

我的代码:

<?php foreach($cities as $city):?> 
    <a class="btn" href="$city['url'];?>"> 
     <?= $city['city'];?> 
    </a> 
<?php endforeach;?> 

结果:

> London 
> New York 
> Paris 
> New York 
> Berlin 

我试着用array_unique但它不工作过。

<?php foreach(array_unique($cities) as $city):?> 
    <a class="btn" href="$city['url'];?>"> 
     <?= $city['city'];?> 
    </a> 
<?php endforeach;?> 

我在哪里错了?

编辑:

Array ( 
[0] => Array ([city] => London [url] => London--UK) 
[1] => Array ([city] => New York [url] => NewYork--USA) 
[2] => Array ([city] => Paris [url] => Paris--France) 
[3] => Array ([city] => New York [url] => NewYork--USA) 
[5] => Array ([city] => Berlin [url] => Berlin--Germany) 
) 
+1

供稿注意你说的意思是“不工作'?我们可以看到你使用的阵列吗? –

+0

查看'结果:',我的代码有效,但显示的是重复的城市 – Rubyx

+0

您的第二种方法对我来说非常合适。你确定他们是重复的吗?没有隐藏的字符或空格? –

回答

1

试试这个

<?php 

function unique_multidim_array($array, $key) { 
    $temp_array = array(); 
    $i = 0; 
    $key_array = array(); 

    foreach($array as $val) { 
     if (!in_array($val[$key], $key_array)) { 
      $key_array[$i] = $val[$key]; 
      $temp_array[$i] = $val; 
     } 
     $i++; 
    } 
    return $temp_array; 
} 


?> 

使用

$details = array( 
    0 => array("id"=>"1", "name"=>"Mike", "num"=>""), 
    1 => array("id"=>"2", "name"=>"Carissa", "num"=>"08548596258"), 
    2 => array("id"=>"1", "name"=>"Mathew", "num"=>"784581254"), 
); 

$details = unique_multidim_array($details,'id'); 

源是用户在http://php.net/manual/es/function.array-unique.php

+0

谢谢它的作品! – Rubyx