Дублирующие значение массива PHP | Грань программирования
Link in progress
Обо мне
Дублирующие значение массива PHP

Delete duplicates in PHP array Как можно быстро и просто удалить дублирующие значение в PHP массиве не использую циклы и не изобретая велосипед? Используйте функцию array_unique().

Несколько примеров использования функции удаление дуюлирующих значений массива PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// duplicates: UA, UR, ME
$aray = array('UA', 'ME', 'GER', '1', 12, 'UA', 'UR', 'UR', 'ME');
$aray_cleaned = array_unique($aray);

// var_dump()
var_dump( $aray_cleaned );
array(6) {
   [0]=> string(2) "UA"
   [1]=> string(2) "ME"
   [2]=> string(3) "GER
   [3]=> string(1) "1"
   [4]=> int(12)
   [6]=> string(2) "UR"
}

При этом ключи входного массива сохраняются.

Обратите внимание на флаги, которые принимает эта функция:
SORT_REGULAR — compare items normally (don’t change types)
SORT_NUMERIC — compare items numerically
SORT_STRING — compare items as strings
SORT_LOCALE_STRING — compare items as strings, based on the current locale.

Тут говорится о том, что можно регулировать метод сравнение значений по их типам. Что бы понять о чём речь, вернемся в примеру и используем флаг SORT_NUMERIC:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// duplicates: UA, UR, ME
echo '<br><br>';
$aray = array( '12', '1', 'GER', 1, 12, 'GER' );
$aray_cleaned = array_unique( $aray, SORT_REGULAR );

// var_dump()
var_dump( $aray_cleaned );
array(5) {
  [0]=>string(2) "12"
  [1]=>string(1) "1"
  [2]=>string(3) "GER"
  [3]=>int(1)
  [4]=>int(12)
}

Выходной массив имеет почти все значени входного массива, кроме GER. SORT_REGULAR — дает указание функци сравнивать значение НЕ изменяя их тип:

1
[1]=>string(1) "1" и [3]=>int(1) = это разные типы данных и как вывод - они не одинаковые.

Вы можете посмотреть больше примеров на официальном сайте PHP.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Max quality, min price, min time expenditure
Send me a message to: work@glogla.net
Portfolio