programing

PHP의 세트에 대한 내장 지원?

javaba 2023. 8. 17. 23:27
반응형

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

언제 나올지 몰라요.

라라벨에는 다음과 같은 방법이 있습니다.uniqueCollection도움이 될 수 있는 수업라라벨 문서에서:

$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

반응형