2013-04-17 2 views
1

Я пытаюсь написать функцию, которая принимает массив и удаляет дубликаты, возвращая результат в виде строки, разделенной запятой. После некоторого Googling я нашел его возможным сделать это с помощью одной строки (return implode (",", unique_array ($ arr));). Тем не менее, это не помогает мне разобраться с моим оригинальным кодом. Итак, возможно, вы могли бы рассказать мне логические ошибки в моем исходном коде, которые заставляют его возвращать все значения, включая дубликаты?PHP: Как удалить дубликаты из массива

Спасибо! :-)

<?php 

function GetUniqueValues($arr) { 
    $x=0; 
    foreach($arr as $i) { 
    if(!in_array($i, $arr2)) { 
     $arr2[x]=$i; 
     $x++; 
    } 
    } 

    $str = implode(",",$arr); 

    return $str; 
} 


$arr = array(1,2,2,3,2,4,4,5,4,7,6,8,9); 

echo GetUniqueValues($arr); 

?> 

ответ

0
$arr2[x]=$i; 

Это неправильно. Вы пропустили $ -sign. Должно быть:

$arr2[$x]=$i; 

КПП. вы также можете сделать:

$arr2[]=$i; 
0

$arr2[x]=$i; должен быть $arr2[$x]=$i; (отсутствует $)

Включите отчеты об ошибках и установить его сообщать обо всех ошибках и уведомления. PHP расскажет вам об этих ошибках.

ini_set('display_errors', 1); 
error_reporting(E_ALL); 
Смежные вопросы