English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Метод удаления дублирующихся элементов в двумерном массиве PHP, сохраняя все ключи и значения

Этот пример рассказывает о методе удаления дубликатов в двумерных массивах на PHP. Предлагается для обсуждения и использования, подробности см. ниже:

Для следующего двумерного массива, необходимо удалить дубликаты:

$arr = array(
     '0'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     '1'=>array(
          'name'=>'susu',
          'age'=>26,
          ),
     '2'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     'new'=>array(
          'name'=>'kube',
          'age'=>37,
          ),
     'list'=>array(
          'name'=>'kube',
          'age'=>27,
          ),
     );

1、 Значения внутри одноэлементных массивов внутри двумерного массива не должны быть полностью одинаковыми, удалите повторяющиеся элементы:

Код如下:

<?php
$arr = array(
     '0'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     '1'=>array(
          'name'=>'susu',
          'age'=>26,
          ),
      '2'=>array(
          'name'=>'james',
          'age'=>30,
          ),
      'new'=>array(
          'name'=>'kube',
          'age'=>37,
          ),
      'list'=>array(
          'name'=>'kube',
          'age'=>27,
          ),
      );
printf("Before tranform the array:<br>");  //输出原来的数组
print_r($arr);
echo "<br/>";
function more_array_unique($arr=array()){}}
  foreach($arr[0] as $k => $v){
    $arr_inner_key[]= $k;  //запись ключей внутреннего массива в одномерный массив
  }
  foreach ($arras $k => $v){
    $v =join(",",$v);  //снижение размерности с помощью implode() также можно
    $temp[$k] =$v;   //сохранение прежних ключей $temp[] это без ключей
  }
  printf("После разделения массива:<br>");
  print_r($temp);  //вывод разбитого массива
  echo"<br/>";
  $temp =array_unique($temp);  //удаление дубликатов: удаление повторяющихся строк
  foreach ($tempas $k => $v){
    $a = explode(",",$v);  //разбиение и重组 как: Array( [0] => james [1] => 30 )
    $arr_after[$k]= array_combine($arr_inner_key,$a); //восстановление прежних ключей и значений
  }
  //ksort($arr_after);//排序 если необходимо: ksort для сортировки массива (сохранение ключей), sort для сортировки без ключей
  return$arr_after;
}
$arr_new = more_array_unique($arr); //вызов функции удаления дубликатов
printf("Удаление дубликатов из массива:<br>");
print_r($arr_new);
echo "<br/>";
?>

Результат вывода:

Прежде чем преобразовать массив:  //オリジナルの配列
Массив ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [2] => Array ( [name] => james [age]=> 30 ) [new] => Array ( [name] => kube [age] => 37 ) [list] =>Array ( [name] => kube [age] => 27 ) )
After split the array: //Array after splitting
Array ( [0] => james,30 [1] => susu,26 [2] => james,30 [new] =>kube,37 [list] => kube,27 )
Duplicate removal of the array: //Array after removal of duplicates
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) [list] => Array ( [name] => kube [age] => 27 ) )

2、 Remove duplicate items from the one-dimensional array inside the two-dimensional array due to a unique key value:

Remove duplicates for a specific key value

<?php
$arr= array(……); //Same two-dimensional array as above
functionsecond_array_unique_bykey($arr, $key){
  $tmp_arr = array();
  foreach($arr as $k => $v)
  {
    if(in_array($v[$key], $tmp_arr))  //Search if $v[$key] exists in the $tmp_arr array, if it exists return true
    {
      unset($arr[$k]); //Destroy a variable If the value exists in $tmp_arr, delete this value
    }
    else {
      $tmp_arr[$k] = $v[$key]; //Place different values in this array for saving
    }
  }
  //ksort($arr); //ksort function sorts the array (retains the original key value key) sort does not retain key value
  return $arr;
  }
  $key = 'name';
  $arr_key = second_array_unique_bykey($arr, $key);
  printf("As for the givenkey->%s:<br>", $key);
  print_r($arr_key);
  echo "<br/>";
?>

Результат вывода:

Что касается предоставленного ключа->name:
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) )

PS: На нашем сайте также есть два онлайн-инструмента для удаления дублирующего текста, которые мы рекомендуем к использованию:

Онлайн-инструмент для удаления дублирующихся элементов:
http://tools.jb51.net/code/quchong

Онлайн-инструмент для удаления дублирующего текста:
http://tools.jb51.net/aideddesign/txt_quchong

Дополнительную информацию о PHP можно найти в наших разделах: «Полное руководство по операциям с массивами (Array) PHP», «Обзор распространенных алгоритмов и методов PHP», «Суммарное руководство по использованию строк (string) в PHP», «Суммарное руководство по распространенным функциям и методам PHP», «Суммарное руководство по обработке ошибок и исключений PHP», «Введение в основы синтаксиса PHP», «Введение в面向 объектное программирование на PHP», «Введение в работу с базами данных MySQL на PHP» и «Обзор распространенных методов работы с базами данных».

Надеюсь, что описание в этой статье поможет вам в программировании на PHP.

Заявление: содержимое этой статьи взято из интернета, авторское право принадлежит автору, материал был предложен и загружен пользователями интернета, сайт не имеет права собственности, материал не был отредактирован вручную, и сайт не несет ответственности за связанные с этим юридические обязательства. Если вы обнаружите подозрительное содержимое о нарушении авторских прав, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для жалоб,并提供相关证据. При подтверждении, сайт немедленно удалит涉嫌侵权的内容.

Основной учебник
Вам может понравиться