홈>
배열은 실제로 PHP에서 트리가 정렬되어 있다는 것을 알고 있습니다. 주어진 배열 인덱스 (정수 키)는 엄격한 순서로 또는 전혀 존재할 필요가 없습니다. 따라서 다음과 같은 배열이 있습니다 :
array( 1 => 'A', 5 => 'B', 2 => 'C', 3 => 'D', 6 => 'E', 0 => 'F' )
어떻게 배열을 다시 색인화하지 않고 첫 번째 빈 키의 가장 낮은 (음수가 아닌) 정수를 결정할 수 있습니까? 이 경우
4
입니다
.
- 답변 # 1
- 답변 # 2
첫 번째 방법은 배열에 화려합니다.
// STUPID FANCY WAY (playing with arrays) $array = array( 1 => 'A', 5 => 'B', 2 => 'C', 3 => 'D', 6 => 'E', 0 => 'F' ); // fetch existing keys $keys = array_keys($array); // build a range with all keys (between min and max) $keys_all = range(min($keys), max($keys)); // difference between all and existing $keys_diff = array_diff($keys_all, $keys); // fetch the first in difference (min) $min_key = reset($keys_diff); // output it var_dump($min_key);
두 번째 방법은 실제로 메모리에 추가 배열이 필요 없기 때문에 실행 가능합니다.
// PROPER WAY (not extra array operations) $array = array( 1 => 'A', 5 => 'B', 2 => 'C', 3 => 'D', 6 => 'E', 0 => 'F' ); // fetch existing keys $keys = array_keys($array); // nullify first $min_key = null; // loop all keys and find missing one (skip 1st and last, they totally exist!) for($key = ($min = min($keys)) + 1, $max = max($keys); $key < $max; ++$key){ if(!isset($array[$key])){ $min_key = $key; break; } } // output it var_dump($min_key);
의견이 충분하지 않은 경우 설명하겠습니다.
PS:이 방법은 최소 키 값이
0
가 아닌 상황을 처리합니다. . 따라서 범위min
와 독립적입니다. 그리고max
. 그리고 키는 분명히 정수 여야합니다. - 답변 # 3
$a = array( 1 => 'A', 5 => 'B', 2 => 'C', 3 => 'D', 6 => 'E', 0 => 'F' ); for($i = 0, $l = count($a); $i < $l; $i++) if(!array_key_exists($i, $a)) break; echo $i; // 4
- 답변 # 4
같은 것을 시도해 보셨습니까
echo min(array_keys($array));
array_keys
배열의 키 목록을 반환하고min
배열에서 가장 낮은 값을 결정합니다.다음 댓글 확장 :
배열이 연속적인 int 값이므로 다음을 수행 할 수 있습니다
$keys = array_keys($array); $arr2 = range(0,max($keys)); // diff gets the missing elements $missing = array_diff($arr2,$keys); echo $missing[0];
이 무차별 대차의 성능에 대해서는 확신 할 수 없지만 시험 할 수 있습니다.
- 답변 # 5
가장 긴 답변 중 하나이지만 가장 많이 설명 된 것입니다.
$Jumbled_Arr = array( 1 => "test", 3 => "another", 4 => "t", 7 => "kfkfk", 9 => "fk" ); function GetMissingKey($Array,$Return_Type = false){ // Get the Maximum Key Value $Max_Key = max(array_keys($Array)); // Treat this as the default array index, as all numerical arrays start at a 0 key set $Counter = 0; // A Blank array to be maniuplated $Generated_Array = array(); // Generate a full array based on the maximum value and the array index, this will create a keyset from 0 to the highest value while ($Counter < $Max_Key){ $Generated_Array[] = $Counter; $Counter++; } // Discover the differences between the correctly formed array and the specified array keys $Missing_Key = array_diff($Generated_Array,array_keys($Array)); // Work with the second parameter, as the settings. if ($Return_Type === true){ // If set to true, we are expecting more than 1 free key within the array, so we will return the entire array return $Missing_Key; }elseif ($Return_Type === false){ // If set to false (or blank) we are expecting a single free key to be discovered & we will return it as an imploded array return implode($Missing_Key); } } print_R(GetMissingKey($Jumbled_Arr,true));
false가 전달되면 단일 정수로 리턴됩니다 (하나 이상의 키가 리턴 될 경우주의하십시오).
관련 자료
- python - 텍스트 파일 내에서 한 줄의 숫자 합계를 찾는 방법은 무엇입니까?
- java - Intellij Idea에서 패키지를 찾는 방법
- r - x 년의 x주의 첫날 찾기
- big o - 이 코드의 공간 및 시간 복잡성을 어떻게 찾습니까?
- rest - 파일 다운로드 요청을 어떻게 찾습니까?
- 자바의 텍스트 파일에서 중복을 찾는 방법
- python - 목록에서 가장 많이 발생하는 두 문자열을 찾는 방법은 무엇입니까?
- php - 연중 첫 번째주의 요일을 표시하는 방법은 무엇입니까?
- Quicksight에서 마지막 기록 만 얻는 방법은 무엇입니까?
- mysql - 각 값의 첫 번째 행만 SQL
- python - pip로 모든 종속성을 설치하는 방법은 무엇입니까?
- java - 배열의 행 합계를 어떻게 얻습니까?
- python - 그리드 선의 시작 위치를 설정하는 방법은 무엇입니까?
- logic - 두 날짜 사이의 각 날짜 찾기 C #
- mount - WSL rootfs의 크기를 줄이려면 어떻게합니까?
- html - 같은 행에서 사이드 바와 본문 섹션을 수정하는 방법은 무엇입니까?
- mobile - 앱 Android에서 adb 출력을 얻는 방법은 무엇입니까?
- cross apply - Redshift에서 다음으로 오래된 행 찾기
- 시간을 얻고 파이썬에서 UTC로 변환하는 방법
- bash - 마지막으로 수정 된 4 개의 파일을 추적하는 방법은 무엇입니까?
관련 질문
- php : 월요일부터 금요일까지 배열 출력 날짜에서
- zip 아카이브 내의 PHP 목록 만 파일 (폴더 제외)
- php : RoomDatabase 쿼리를 반복하는 방법 android kotlin
- PHP에서 동적 배열 키 구조 만들기
- php : foreach 내부에서 foreach를 시도하지만 1 개의 값만 반환합니다.
- 대시 화살표 "->"를 사용하여 배열 값을 검색하는 PHP
- PHP의 모든 배열 값을 정리할 수 없습니다 (trim /htmlentities 사용).
- mysql PHP에 배열 내부의 JSON 배열
- .csv의 그룹 배열 | PHP
- php : PayPal \ Api \ Amount 유형의 개체를 배열로 사용할 수 없습니다.
while
의 간편한 솔루션 루프 :출력 :