PHP의 세트에 대한 내장 지원?
저는 중복된 항목을 허용하지 않지만 다른 집합이나 배열을 쉽게 결합할 수 있는 간단한 php 배열을 만드는 방법을 찾고 있습니다.
제가 직접 쓰는 것은 어렵지 않을 것이기 때문에 저는 언어에 그런 특징이 있는지에 대부분 관심이 있습니다.그럴 필요가 없다면 하고 싶지 않을 뿐입니다.
값 대신 배열 키를 사용하면 중복이 없음을 확인할 수 있으며, 이를 통해 두 "집합"을 쉽게 병합할 수 있습니다.
$set1 = array ('a' => 1, 'b' => 1, );
$set2 = array ('b' => 1, 'c' => 1, );
$union = $set1 + $set2;
정답은 아니오입니다. PHP에는 네이티브 세트 솔루션이 없습니다.데이터 구조가 있지만 기본 PHP가 아닙니다.
모든 언어로 지도(즉, 연관 배열)를 사용하여 집합을 구현하는 관례가 있습니다.그리고 PHP의 경우 사용해야 합니다.true
밑값으로
<?php
$left = [1=>true, 5=>true, 7=>true];
$right = [6=>true, 7=>true, 8=>true, 9=>true];
$union = $left + $right;
$intersection = array_intersect_assoc($left, $right);
var_dump($left, $right, $union, $intersection);
array_combine을 사용하여 중복 항목을 제거할 수 있습니다.
$cars = array("Volvo", "BMW", "Toyota");
array_push($cars,"BMW");
$map = array_combine($cars, $cars);
저도 이 문제가 있어서 수업: https://github.com/jakewhiteley/php-set-object 을 작성했습니다.
제안된 대로 확장 및 ArrayObject를 수행하고 값의 네이티브 느낌 삽입/반복/제거를 허용하지만 사용하지 않습니다.array_unique()
아무 곳이나.
구현은 EMCA 6 JavaScript의 세트용 MDN JS 문서를 기반으로 합니다.
Set 클래스입니다.
https://www.php.net/manual/en/class.ds-set.php
언제 나올지 몰라요.
라라벨에는 다음과 같은 방법이 있습니다.unique
에Collection
도움이 될 수 있는 수업라라벨 문서에서:
$collection = collect([1, 1, 2, 2, 3, 4, 2]);
$unique = $collection->unique();
$unique->values()->all();
// [1, 2, 3, 4]
언급URL : https://stackoverflow.com/questions/8127384/built-in-support-for-sets-in-php
'programing' 카테고리의 다른 글
특정 사용자로부터 순위, 이름 및 점수를 얻기 위한 SQL 쿼리 (0) | 2023.08.17 |
---|---|
MariaDB 이미 시스템 버전 테이블 처리 방법 (0) | 2023.08.17 |
Laravel에서 만료된 토큰 처리 중 (0) | 2023.08.17 |
마우스가 끝나면 버튼 색상 변경 (0) | 2023.05.29 |
셸 스크립트에서 파일 이름 확장자를 제거하려면 어떻게 해야 합니까? (0) | 2023.05.29 |