답변:
$arr = array(/* stuff */); $val = $arr? reset($arr): /* value to indicate array is empty */;
배열에 대해 충분히 모른다면 (첫 번째 키가 foo 인지 bar 인지 확실하지 않은 경우) 배열도 비어 있을 수 있습니다. .
따라서 반환 된 값이 부울 FALSE 일 가능성이있는 경우 특히 확인하는 것이 가장 좋습니다.
$value = empty($arr) ? $default : reset($arr);
위의 코드의 사용 reset
등은 부작용을 가지고 사용을 선호 할 수 있도록 (이 배열의 내부 포인터를 재설정) array_slice
신속하게 배열의 첫 번째 요소의 사본을 액세스 할 수 :
$value = $default;
foreach(array_slice($arr, 0, 1) as $value);
키와 값을 별도로 가져 오려면 다음에 네 번째 매개 변수를 추가해야합니다 array_slice
.
foreach(array_slice($arr, 0, 1, true) as $key => $value);
첫 번째 항목 을 한 쌍으로 가져 오려면 ( key => value
) :
$item = array_slice($arr, 0, 1, true);
마지막 항목, 키 및 값을 별도로 가져 오는 간단한 수정 :
foreach(array_slice($arr, -1, 1, true) as $key => $value);
배열이 실제로 크지 않은 경우 실제로 array_slice
전체 키 배열의 사본을 필요로하지 않고 오히려 첫 번째 항목을 얻을 수 있습니다.
$key = count($arr) ? array_keys($arr)[0] : null;
그러나 배열이 매우 큰 경우 호출에 array_keys
많은 시간과 메모리가 필요합니다 array_slice
(두 함수 모두 배열을 따라 가지만 필요한 수의 항목을 수집하자마자 종료됩니다).
주목할만한 예외는 매우 크고 복잡한 객체를 가리키는 첫 번째 키가있는 경우입니다. 이 경우 array_slice
첫 번째 큰 객체를 복제 array_keys
하고 키만 가져옵니다.
PHP 7.3 array_key_first()
은 물론 구현array_key_last()
합니다. 이는 어레이의 내부 상태를 부작용으로 재설정하지 않고 첫 번째 키와 마지막 키에 효율적으로 액세스 할 수 있도록 명시 적으로 제공됩니다.
그래서 PHP 7.3의 첫 번째 값 의은 $array
에 액세스 할 수 있습니다
$array[array_key_first($array)];
그래도 배열이 비어 있지 않은지 확인하는 것이 좋습니다. 그렇지 않으면 오류가 발생합니다.
$firstKey = array_key_first($array);
if (null === $firstKey) {
$value = "Array is empty"; // An error should be handled here
} else {
$value = $array[$firstKey];
}
첫 번째 반복에서 중단되는 가짜 루프 :
$key = $value = NULL;
foreach ($array as $key => $value) {
break;
}
echo "$key = $value\n";
또는 each()
( 경고 : PHP 7.2.0부터 더 이상 사용되지 않음 ) :
reset($array);
list($key, $value) = each($array);
echo "$key = $value\n";
reset()
함수는 첫 번째 값만 검색합니다.
몇 가지 옵션이 있습니다. array_shift()
첫 번째 요소를 반환하지만 배열에서 첫 번째 요소도 제거합니다.
$first = array_shift($array);
current()
내부 메모리 포인터가 가리키는 배열의 값을 반환합니다. 이것은 기본적으로 첫 번째 요소입니다.
$first = current($array);
첫 번째 요소를 가리키는 지 확인하려면 항상을 사용할 수 있습니다 reset()
.
reset($array);
$first = current($array);
reset()
실제로는 요소를 반환하므로 a를 사용하면 그 뒤에 $first = current($array)
중복 되는 요소 가됩니다.
그냥 그래서 우리는 몇 가지 다른 옵션을 가지고 : reset($arr);
당신이 매우 큰 배열을하고, 장소에 배열 포인터를 유지하려고하지 않는 경우 충분한 그것을 오버 헤드의 최소 금액을 초래한다. 그러나 몇 가지 문제가 있습니다.
$arr = array(1,2);
current($arr); // 1
next($arr); // 2
current($arr); // 2
reset($arr); // 1
current($arr); // 1 !This was 2 before! We've changed the array's pointer.
포인터를 변경하지 않고이 작업을 수행하는 방법 :
$arr[reset(array_keys($arr))]; // OR
reset(array_values($arr));
$arr[reset(array_keys($arr))];
배열이 실제로 비어 있으면 경고가 발생한다는 이점이 있습니다.
reset () 함수를 사용하여 이와 같은 키를 몰라도 해당 배열에서 첫 번째 항목을 가져옵니다.
$value = array('foo' => 400, 'bar' => 'xyz');
echo reset($value);
출력 // 400
당신은 이것을 시도 할 수 있습니다.
배열의 첫 번째 값을 얻으려면 :-
<?php
$large_array = array('foo' => 'bar', 'hello' => 'world');
var_dump(current($large_array));
?>
배열의 첫 번째 키를 얻으려면
<?php
$large_array = array('foo' => 'bar', 'hello' => 'world');
$large_array_keys = array_keys($large_array);
var_dump(array_shift($large_array_keys));
?>