2013-07-30 5 views
-4

Мой PHP-скрипт возвращает некоторый массив, и я хотел бы удалить дубликаты в этом массиве. Не могли бы вы рассказать мне, как это сделать? Я не хочу удалять дубликаты из MySQL, только с PHP. Я видел некоторые вопросы, подобные этому, но я не мог найти способ реализовать ответы.Удалить дубликаты из массива PHP

Мой PHP:

$con = mysqli_connect($host, $user, $pwd, $db); 

if(mysqli_connect_errno($con)) { 
    die("Failed to connect to MySQL: " . mysqli_connect_error()); 
} 


$sql = "SELECT Grad, Predmet FROM lista"; 
$result = mysqli_query($con, $sql); 

$rows = array(); 

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 

     $rows[] = $row; 
    } 

mysqli_close($con); 

$rows = (object) array('lista' => $rows); 
echo json_encode($rows); 

И скрипт возвращает это:

{"lista":[{"Grad":"Beograd","Predmet":"matematika"},{"Grad":"Novi_Sad","Predmet":"matematika"},{"Grad":"Beograd","Predmet":"matematika"},{"Grad":"Novi_Sad","Predmet":"matematika"},{"Grad":"Beograd","Predmet":"informatika"},{"Grad":"Beograd","Predmet":"informatika"}]} 
+0

Пытались ли вы [ 'array_unique()'] (http://php.net/array_unique)? –

+2

Почему вы хотите удалить дубликаты в PHP? Google 'SELECT DISTINCT'. – Jon

+0

Объявление общественной службы: ** 'array_unique' не работает в таких случаях, потому что элементы сами являются массивами **. Спасибо. – Jon

ответ

0

Заменить это:

$rows = (object) array('lista' => $rows); 
echo json_encode($rows); 

С этим:

$lista = array_map('unserialize', array_unique(array_map('serialize', $rows))); 
echo json_encode((object) array('lista' => $lista)); 
+0

Tnx много. Это работает. – Michael

+0

Добро пожаловать. –

+0

У меня проблема, теперь, когда я реализовал ваше решение, я получаю номер перед моим массивом. Зачем? Могу ли я удалить его? «11»: {«Град»: «Белград», «Предмет»: «matematika»} – Michael

1

попробовать эту функцию http://php.net/manual/en/function.array-unique.php

array array_unique (array $array [, int $sort_flags = SORT_STRING ]) 

Exemple из документации php.net:

<?php 
    $input = array("a" => "green", "red", "b" => "green", "blue", "red"); 
    $result = array_unique($input); 
    print_r($result); 
?> 
+0

Я не знаю, как это использовать ... – Michael

+0

Я добавил пример в свой пост – Freelancer

+0

все еще я не понимаю, как реализовать в моем случае ... извините за беспокойство – Michael

Смежные вопросы