전제:
오늘 누군가가 배열을 생성하고 싶어한다는 게시물을 봤습니다. 이 배열에는 10개의 요소가 있으며, 모두 정수이고 1~60 사이의 반복되지 않는 난수입니다.
물론, 이 질문은 어렵지 않습니다! 아래는 포럼 답변에서 나온 답변입니다.
코드:
Php 코드
<?php function get_randoms($min,$max,$num){ $count = 0; $res = array(); while($count<$num){ $res[] = mt_random($min,$max); $res = array_flip(array_flip($res)); $count = count($res); } return $res; } $result = get_randoms(1,60,10); ?>
여기서 그는 $count를 사용하여 배열 수를 가져오고 다음과 같습니다. while 루프 결과 배열의 수를 대상 수보다 작게 만듭니다. 이런 방식으로 $count는 대상 숫자의 배열로 얻어집니다.
각 사이클 동안 mt_random($min,$max)을 통해 범위 내의 값을 무작위로 얻어 $res 배열에 저장한 다음 두 번의 키-값 교환, 즉 배열 키 Uniqueness를 통해 중복되지 않도록 보장합니다.
이 로직의 코드를 읽고 난 뒤 깊은 생각을 하지 않을 수 없었습니다. 만약 array_filp 함수를 모른다면 어떻게 하시겠습니까?
직설적으로 말하면, 난수가 중복되지 않도록 키의 고유성을 사용합니다. 그렇다면 이 문제를 단순화할 수 있을까요?
코드:
PHP 코드
<?php function get_randoms($min,$max,$num){ $count = 0; $res = array(); while($count<$num){ $key = mt_random($min,$max); $res[$key] = $key; $count = count($res); } return $res; } $result = get_randoms(1,60,10); ?>
이런 식으로 배열 키의 고유성을 통해 완전히 해결했습니다. 이 질문입니다. array_flip은 전혀 사용되지 않습니다.
위를 통해 저는 두 가지 점을 제시했습니다.
1: PHP는 수많은 내장 함수를 제공하기 때문에 실행 효율성이 매우 높습니다. 문제가 발생하면 이를 활용하여 문제를 해결하려고 최선을 다합니다. 이것은 편리하고 빠릅니다. 그러므로 우리는 일상 업무에서 일하고 공부하며 가능한 한 많은 PHP 기능을 축적하고 깊이 이해합니다.
2: PHP는 많은 내장 함수를 제공하고 실행 효율성도 매우 높지만 효율성은 높지만 여전히 실행하는 데 시간이 걸린다는 점을 지적하고 싶습니다. 문제에 직면했을 때, 우리는 먼저 해결책의 본질을 볼 수 있어야 그것을 능숙하게 실행할 수 있습니다.