2016-05-25 4 views
2

Как удалить дубликаты из массива, если он только должен проверить в положении [1] (название фруктового)Удалить дубликаты в нумерованном массиве

Array ( 
    [0] => Array ( 
     [0] => 1 
     [1] => Apple 
    ) 
    [1] => Array ( 
     [0] => 2 
     [1] => Pineapple 
    ) 
    [2] => Array ( 
     [0] => 1 
     [1] => Apple 
    ) 
) 
+0

Еогеасп по сравнению с исходным массивом, добавьте каждое значение в новый массив, где ключ '[0]' из каждого массива. Дубликаты просто перезаписывают друг друга. Затем вы можете использовать 'array_values', если хотите сбросить ключи до нуля. –

+0

Что делать, если у меня есть больше номеров/информации, чем название фруктов? Будет ли он работать? – user1273409

+0

О, я был назад. Вы можете создать массив с ключом '[1]'. Любой из них будет работать. –

ответ

1

Вы можете просто Foreach по массиву и добавьте каждое значение к временный массив, где ключ [1] из каждого массива. Дублирующие значения просто переписывают друг друга. Затем вы можете использовать array_values, если хотите сбросить ключи до числовых.

Вот пример:

<?php 
$arr = array ( 
    array (1, 'Apple'), 
    array (2, 'Pineapple'), 
    array (1, 'Apple') 
); 
echo "Before:\n"; 
print_r($arr); 

//create a temp array 
$tmp = array(); 
foreach($arr as $v){ 
    $tmp[$v[1]] = $v; 
} 
//reset the keys 
$arr = array_values($tmp); 

echo "\n\nAfter:\n"; 
print_r($arr); 

Демонстрация: https://3v4l.org/KCECc

+0

Спасибо, действительно круто. – user1273409

2

Применение array_unique:

$arr = array_unique($arr, SORT_REGULAR); 

SORT_REGULAR флаг сравнивает элементы, как правило, не изменяя типов

http://php.net/manual/fr/function.array-unique.php

+0

Не удалять мои дубликаты. – user1273409

+0

Интересно, что [он работает] (https://3v4l.org/vVgAA), но в руководстве конкретно указано 'Примечание: обратите внимание, что array_unique() не предназначен для работы с многомерными массивами, что и есть. –

0

Этот код может быть вам полезен.

$array =array ( 
'0' => array ('0' => 1, '1' => 'Apple'), 
'1' => array ('0' => 2, '1' => 'Pineapple'), 
'2' => array ('0' => 1, '1' => 'Apple') , 
); 

$new_array = array(); 
foreach($array as $values){ 
    $trimmed_array=array_map('trim',$values); 
    $new_array[$values[1]] = $values; 
} 

print_r (array_values ​​($ new_array));

Out Помещенный:

Array 
(
    [0] => Array 
    (
     [0] => 1 
     [1] => Apple 
    ) 

[1] => Array 
    (
     [0] => 2 
     [1] => Pineapple 
    ) 

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