<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=PHP%2F%ED%95%A8%EC%88%98%2Farray_first</id>
	<title>PHP/함수/array first - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=PHP%2F%ED%95%A8%EC%88%98%2Farray_first"/>
	<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=PHP/%ED%95%A8%EC%88%98/array_first&amp;action=history"/>
	<updated>2026-07-06T04:00:44Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.gaonwiki.com/w/index.php?title=PHP/%ED%95%A8%EC%88%98/array_first&amp;diff=107948&amp;oldid=prev</id>
		<title>Gaon12: 시작</title>
		<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=PHP/%ED%95%A8%EC%88%98/array_first&amp;diff=107948&amp;oldid=prev"/>
		<updated>2025-07-29T23:57:46Z</updated>

		<summary type="html">&lt;p&gt;시작&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 개요 ==&lt;br /&gt;
&lt;br /&gt;
PHP에서 배열의 첫 번째 요소를 가져오는 것은 생각보다 까다로운 작업이었다. 기존의 reset()과 end() 함수는 배열의 &amp;quot;내부 반복자&amp;quot;를 수정하기 때문에 의미적으로 잘못된 접근이며, 모든 유형의 표현식에서 제대로 작동하지 않는 문제가 있었다. &amp;#039;&amp;#039;&amp;#039;array_first()&amp;#039;&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;미디어위키에서 언더바는 공백으로 치환되어 array first로 나오지만, 실제로는 array_first이다.&amp;lt;/ref&amp;gt;는 이러한 문제들을 해결하기 위해 만들어진 함수다.&lt;br /&gt;
&lt;br /&gt;
== 문법 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
array_first(array $array): mixed&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 매개변수 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$array&amp;#039;&amp;#039;&amp;#039; (array): 첫 번째 값을 추출할 대상 배열&lt;br /&gt;
&lt;br /&gt;
=== 반환값 ===&lt;br /&gt;
* 배열의 첫 번째 값 (mixed)&lt;br /&gt;
* 빈 배열인 경우 null 반환&lt;br /&gt;
&lt;br /&gt;
== 기본 사용법 ==&lt;br /&gt;
&lt;br /&gt;
=== 인덱스 배열에서의 사용 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 기본적인 인덱스 배열&lt;br /&gt;
$array = [1, 2, 3];&lt;br /&gt;
$first = array_first($array);&lt;br /&gt;
echo $first; // 출력: 1&lt;br /&gt;
&lt;br /&gt;
// 다양한 데이터 타입&lt;br /&gt;
$mixed = [null, 2, 3];&lt;br /&gt;
$first = array_first($mixed);&lt;br /&gt;
var_dump($first); // 출력: null&lt;br /&gt;
&lt;br /&gt;
$boolean = [true, false];&lt;br /&gt;
$first = array_first($boolean);&lt;br /&gt;
var_dump($first); // 출력: bool(true)&lt;br /&gt;
&lt;br /&gt;
$objects = [new stdClass(), &amp;#039;string&amp;#039;, 123];&lt;br /&gt;
$first = array_first($objects);&lt;br /&gt;
var_dump($first); // 출력: object(stdClass)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 연관 배열에서의 사용 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 연관 배열&lt;br /&gt;
$associative = [&amp;#039;a&amp;#039; =&amp;gt; 2, &amp;#039;b&amp;#039; =&amp;gt; 1, &amp;#039;c&amp;#039; =&amp;gt; 3];&lt;br /&gt;
$first = array_first($associative);&lt;br /&gt;
echo $first; // 출력: 2&lt;br /&gt;
&lt;br /&gt;
// 키가 정수가 아닌 배열&lt;br /&gt;
$fruits = [&lt;br /&gt;
    4 =&amp;gt; &amp;#039;apple&amp;#039;,&lt;br /&gt;
    7 =&amp;gt; &amp;#039;orange&amp;#039;, &lt;br /&gt;
    13 =&amp;gt; &amp;#039;plum&amp;#039;&lt;br /&gt;
];&lt;br /&gt;
$first = array_first($fruits);&lt;br /&gt;
echo $first; // 출력: apple&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 빈 배열 처리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 빈 배열&lt;br /&gt;
$empty = [];&lt;br /&gt;
$first = array_first($empty);&lt;br /&gt;
var_dump($first); // 출력: null&lt;br /&gt;
&lt;br /&gt;
// null 자체도 유효한 배열 값이므로 주의&lt;br /&gt;
$withNull = [null, &amp;#039;second&amp;#039;, &amp;#039;third&amp;#039;];&lt;br /&gt;
$first = array_first($withNull);&lt;br /&gt;
var_dump($first); // 출력: null (실제 첫 번째 값)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 기존 방법들과의 비교 ==&lt;br /&gt;
&lt;br /&gt;
=== reset() 함수의 문제점 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$array = [&amp;#039;apple&amp;#039;, &amp;#039;banana&amp;#039;, &amp;#039;cherry&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
// reset() 사용 - 내부 포인터 수정됨&lt;br /&gt;
$first = reset($array);&lt;br /&gt;
echo current($array); // &amp;#039;apple&amp;#039; - 포인터가 첫 번째로 이동됨&lt;br /&gt;
&lt;br /&gt;
// 함수 반환값에 직접 적용 시 문제 발생&lt;br /&gt;
function getArray() {&lt;br /&gt;
    return [&amp;#039;a&amp;#039;, &amp;#039;b&amp;#039;, &amp;#039;c&amp;#039;];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 이 코드는 PHP 경고 발생 가능&lt;br /&gt;
// $first = reset(getArray()); // Warning: Only variables should be passed by reference&lt;br /&gt;
&lt;br /&gt;
// array_first()는 이런 문제가 없음&lt;br /&gt;
$first = array_first(getArray()); // 문제없음&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 직접 인덱스 접근의 한계 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$array = [4 =&amp;gt; &amp;#039;apple&amp;#039;, 7 =&amp;gt; &amp;#039;orange&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
// 잘못된 방법 - 0번 인덱스가 없을 수 있음&lt;br /&gt;
// echo $array[0]; // Warning: Undefined array key 0&lt;br /&gt;
&lt;br /&gt;
// 올바른 방법&lt;br /&gt;
echo array_first($array); // &amp;#039;apple&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== array_key_first() 조합의 번거로움 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$array = [&amp;#039;key1&amp;#039; =&amp;gt; &amp;#039;value1&amp;#039;, &amp;#039;key2&amp;#039; =&amp;gt; &amp;#039;value2&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
// 기존의 복잡한 방법&lt;br /&gt;
$first = $array[array_key_first($array)];&lt;br /&gt;
&lt;br /&gt;
// 새로운 간단한 방법&lt;br /&gt;
$first = array_first($array);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== array_values() 방법의 비효율성 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$largeArray = array_fill(0, 100000, &amp;#039;data&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// 비효율적 - 전체 배열을 복사함&lt;br /&gt;
$first = array_values($largeArray)[0];&lt;br /&gt;
&lt;br /&gt;
// 효율적 - 첫 번째 값만 반환&lt;br /&gt;
$first = array_first($largeArray);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 실무 활용 예제 ==&lt;br /&gt;
&lt;br /&gt;
=== 설정 관리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 환경별 데이터베이스 설정&lt;br /&gt;
$dbConfigs = [&lt;br /&gt;
    &amp;#039;production&amp;#039; =&amp;gt; [&amp;#039;host&amp;#039; =&amp;gt; &amp;#039;prod.db.com&amp;#039;, &amp;#039;port&amp;#039; =&amp;gt; 5432],&lt;br /&gt;
    &amp;#039;staging&amp;#039; =&amp;gt; [&amp;#039;host&amp;#039; =&amp;gt; &amp;#039;stage.db.com&amp;#039;, &amp;#039;port&amp;#039; =&amp;gt; 5432],&lt;br /&gt;
    &amp;#039;development&amp;#039; =&amp;gt; [&amp;#039;host&amp;#039; =&amp;gt; &amp;#039;localhost&amp;#039;, &amp;#039;port&amp;#039; =&amp;gt; 5432]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// 첫 번째(우선순위 높은) 설정 사용&lt;br /&gt;
$primaryConfig = array_first($dbConfigs);&lt;br /&gt;
echo &amp;quot;Primary DB Host: &amp;quot; . $primaryConfig[&amp;#039;host&amp;#039;];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API 응답 처리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// API에서 받은 검색 결과&lt;br /&gt;
$searchResults = [&lt;br /&gt;
    [&amp;#039;title&amp;#039; =&amp;gt; &amp;#039;PHP 8.5 Features&amp;#039;, &amp;#039;relevance&amp;#039; =&amp;gt; 95],&lt;br /&gt;
    [&amp;#039;title&amp;#039; =&amp;gt; &amp;#039;Array Functions&amp;#039;, &amp;#039;relevance&amp;#039; =&amp;gt; 88],&lt;br /&gt;
    [&amp;#039;title&amp;#039; =&amp;gt; &amp;#039;Modern PHP&amp;#039;, &amp;#039;relevance&amp;#039; =&amp;gt; 82]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// 가장 관련성 높은 첫 번째 결과 사용&lt;br /&gt;
$topResult = array_first($searchResults);&lt;br /&gt;
if ($topResult !== null) {&lt;br /&gt;
    echo &amp;quot;Top result: &amp;quot; . $topResult[&amp;#039;title&amp;#039;];&lt;br /&gt;
    echo &amp;quot; (Relevance: &amp;quot; . $topResult[&amp;#039;relevance&amp;#039;] . &amp;quot;%)&amp;quot;;&lt;br /&gt;
} else {&lt;br /&gt;
    echo &amp;quot;No results found&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 폴백 메커니즘 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 여러 데이터 소스에서 순서대로 시도&lt;br /&gt;
$dataSources = [&lt;br /&gt;
    &amp;#039;cache&amp;#039; =&amp;gt; getCachedData(),&lt;br /&gt;
    &amp;#039;database&amp;#039; =&amp;gt; getDatabaseData(),&lt;br /&gt;
    &amp;#039;api&amp;#039; =&amp;gt; getApiData()&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// null이 아닌 첫 번째 데이터 소스 찾기&lt;br /&gt;
$validData = null;&lt;br /&gt;
foreach ($dataSources as $source =&amp;gt; $data) {&lt;br /&gt;
    if ($data !== null) {&lt;br /&gt;
        $validData = $data;&lt;br /&gt;
        error_log(&amp;quot;Data retrieved from: $source&amp;quot;);&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 또는 array_first()로 첫 번째 유효한 소스의 이름 확인&lt;br /&gt;
$firstSourceName = array_first(array_keys(array_filter($dataSources)));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 배치 처리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 처리할 작업 큐&lt;br /&gt;
$jobQueue = [&lt;br /&gt;
    [&amp;#039;id&amp;#039; =&amp;gt; 1, &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;email&amp;#039;, &amp;#039;priority&amp;#039; =&amp;gt; &amp;#039;high&amp;#039;],&lt;br /&gt;
    [&amp;#039;id&amp;#039; =&amp;gt; 2, &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;report&amp;#039;, &amp;#039;priority&amp;#039; =&amp;gt; &amp;#039;medium&amp;#039;],&lt;br /&gt;
    [&amp;#039;id&amp;#039; =&amp;gt; 3, &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;backup&amp;#039;, &amp;#039;priority&amp;#039; =&amp;gt; &amp;#039;low&amp;#039;]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// 첫 번째 작업 처리&lt;br /&gt;
$nextJob = array_first($jobQueue);&lt;br /&gt;
if ($nextJob !== null) {&lt;br /&gt;
    processJob($nextJob);&lt;br /&gt;
    // 처리된 작업은 큐에서 제거&lt;br /&gt;
    array_shift($jobQueue);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function processJob($job) {&lt;br /&gt;
    echo &amp;quot;Processing job {$job[&amp;#039;id&amp;#039;]}: {$job[&amp;#039;type&amp;#039;]} ({$job[&amp;#039;priority&amp;#039;]} priority)\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 사용자 권한 확인 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 사용자의 역할 목록 (우선순위 순)&lt;br /&gt;
$userRoles = [&amp;#039;admin&amp;#039;, &amp;#039;editor&amp;#039;, &amp;#039;user&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
// 최고 권한 확인&lt;br /&gt;
$primaryRole = array_first($userRoles);&lt;br /&gt;
switch ($primaryRole) {&lt;br /&gt;
    case &amp;#039;admin&amp;#039;:&lt;br /&gt;
        echo &amp;quot;Full access granted&amp;quot;;&lt;br /&gt;
        break;&lt;br /&gt;
    case &amp;#039;editor&amp;#039;:&lt;br /&gt;
        echo &amp;quot;Edit access granted&amp;quot;;&lt;br /&gt;
        break;&lt;br /&gt;
    case &amp;#039;user&amp;#039;:&lt;br /&gt;
        echo &amp;quot;Read access granted&amp;quot;;&lt;br /&gt;
        break;&lt;br /&gt;
    default:&lt;br /&gt;
        echo &amp;quot;No access&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 성능 특성 ==&lt;br /&gt;
&lt;br /&gt;
=== 시간 복잡도 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;O(1)&amp;#039;&amp;#039;&amp;#039; - 상수 시간 복잡도&lt;br /&gt;
* 배열 크기에 관계없이 동일한 성능&lt;br /&gt;
&lt;br /&gt;
=== 메모리 사용량 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 대용량 배열 테스트&lt;br /&gt;
$hugeArray = array_fill(0, 1000000, &amp;#039;data&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// array_first() - 메모리 효율적&lt;br /&gt;
$memory_before = memory_get_usage();&lt;br /&gt;
$first = array_first($hugeArray);&lt;br /&gt;
$memory_after = memory_get_usage();&lt;br /&gt;
echo &amp;quot;array_first() 메모리 사용량: &amp;quot; . ($memory_after - $memory_before) . &amp;quot; bytes\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// array_values() - 메모리 비효율적 (전체 배열 복사)&lt;br /&gt;
$memory_before = memory_get_usage();&lt;br /&gt;
$first = array_values($hugeArray)[0];&lt;br /&gt;
$memory_after = memory_get_usage();&lt;br /&gt;
echo &amp;quot;array_values()[0] 메모리 사용량: &amp;quot; . ($memory_after - $memory_before) . &amp;quot; bytes\n&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP 버전별 폴리필 ==&lt;br /&gt;
&lt;br /&gt;
=== PHP 8.4 이하를 위한 사용자 정의 구현 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!function_exists(&amp;#039;array_first&amp;#039;)) {&lt;br /&gt;
    /**&lt;br /&gt;
     * PHP 8.5 array_first() 함수의 폴리필&lt;br /&gt;
     *&lt;br /&gt;
     * @param array $array 대상 배열&lt;br /&gt;
     * @return mixed 첫 번째 값 또는 null (빈 배열인 경우)&lt;br /&gt;
     */&lt;br /&gt;
    function array_first(array $array): mixed {&lt;br /&gt;
        return $array === [] ? null : $array[array_key_first($array)];&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symfony 폴리필 사용 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
composer require symfony/polyfill-php85&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Symfony 폴리필 자동 로드&lt;br /&gt;
use Symfony\Polyfill\Php85\Php85;&lt;br /&gt;
&lt;br /&gt;
$array = [&amp;#039;apple&amp;#039;, &amp;#039;banana&amp;#039;, &amp;#039;cherry&amp;#039;];&lt;br /&gt;
$first = array_first($array);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 주의사항 및 제한사항 ==&lt;br /&gt;
&lt;br /&gt;
=== 네임스페이스 충돌 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 기존에 array_first() 함수를 정의한 경우&lt;br /&gt;
function array_first($array) {&lt;br /&gt;
    // 사용자 정의 구현&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// PHP 8.5에서는 Fatal Error 발생&lt;br /&gt;
// Fatal error: Cannot redeclare array_first()&lt;br /&gt;
&lt;br /&gt;
// 해결 방법 1: 조건부 정의&lt;br /&gt;
if (!function_exists(&amp;#039;array_first&amp;#039;)) {&lt;br /&gt;
    function array_first($array) {&lt;br /&gt;
        // 사용자 정의 구현&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 해결 방법 2: 네임스페이스 사용&lt;br /&gt;
namespace MyApp;&lt;br /&gt;
&lt;br /&gt;
function array_first($array) {&lt;br /&gt;
    // 네임스페이스 내 함수&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  null 값의 모호성 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$array1 = [];                    // 빈 배열&lt;br /&gt;
$array2 = [null];               // null을 포함한 배열&lt;br /&gt;
$array3 = [null, &amp;#039;second&amp;#039;];     // null이 첫 번째인 배열&lt;br /&gt;
&lt;br /&gt;
$result1 = array_first($array1); // null (빈 배열)&lt;br /&gt;
$result2 = array_first($array2); // null (실제 값)&lt;br /&gt;
$result3 = array_first($array3); // null (실제 값)&lt;br /&gt;
&lt;br /&gt;
// 빈 배열과 null 값 구분이 필요한 경우&lt;br /&gt;
function safe_array_first($array) {&lt;br /&gt;
    if (empty($array)) {&lt;br /&gt;
        throw new InvalidArgumentException(&amp;#039;Array is empty&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
    return array_first($array);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 타입 안전성 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// mixed 반환 타입으로 인한 타입 체크 필요&lt;br /&gt;
$array = [&amp;#039;123&amp;#039;, 456, true, null];&lt;br /&gt;
$first = array_first($array);&lt;br /&gt;
&lt;br /&gt;
// 타입별 처리&lt;br /&gt;
if (is_string($first)) {&lt;br /&gt;
    echo &amp;quot;String: &amp;quot; . $first;&lt;br /&gt;
} elseif (is_int($first)) {&lt;br /&gt;
    echo &amp;quot;Integer: &amp;quot; . $first;&lt;br /&gt;
} elseif (is_bool($first)) {&lt;br /&gt;
    echo &amp;quot;Boolean: &amp;quot; . ($first ? &amp;#039;true&amp;#039; : &amp;#039;false&amp;#039;);&lt;br /&gt;
} elseif (is_null($first)) {&lt;br /&gt;
    echo &amp;quot;Null value&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RFC 및 개발 과정 ==&lt;br /&gt;
&lt;br /&gt;
이 함수는 2025년 3월 31일자 RFC를 통해 제안되었으며, 커뮤니티의 압도적으로 긍정적인 반응을 받고 있다.&amp;lt;ref&amp;gt;배열 작업을 더 안전하고 직관적이고, 속도도 항상 O(1)이기에 긍정적인 것이 당연하다.&amp;lt;/ref&amp;gt; PHP 소스 코드의 마스터 브랜치에 이미 구현되어 병합된 상태다.&lt;br /&gt;
&lt;br /&gt;
=== 설계 결정사항 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;기본값 매개변수 제외&amp;#039;&amp;#039;&amp;#039;: PHP 배열이 타입이 없어서 의미 있는 센티넬 값을 정의하기 어렵고, 배열 함수들에 대한 선례가 없음&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;함수명 선택&amp;#039;&amp;#039;&amp;#039;: array_value_first 대신 array_first를 선택한 이유는 기존 배열 함수들과의 일관성 유지&lt;br /&gt;
&lt;br /&gt;
== 마이그레이션 가이드 ==&lt;br /&gt;
&lt;br /&gt;
=== PHP 8.4에서 8.5로 업그레이드 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 기존 코드 (PHP 8.4 이하)&lt;br /&gt;
function getFirstElement($array) {&lt;br /&gt;
    if (empty($array)) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    return reset($array);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 새로운 코드 (PHP 8.5+)&lt;br /&gt;
function getFirstElement($array) {&lt;br /&gt;
    return array_first($array);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 점진적 마이그레이션 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1단계: 폴리필 추가&lt;br /&gt;
if (!function_exists(&amp;#039;array_first&amp;#039;)) {&lt;br /&gt;
    function array_first(array $array): mixed {&lt;br /&gt;
        return $array === [] ? null : $array[array_key_first($array)];&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 2단계: 기존 코드에서 array_first() 사용&lt;br /&gt;
$data = getUserData();&lt;br /&gt;
$firstUser = array_first($data);&lt;br /&gt;
&lt;br /&gt;
// 3단계: PHP 8.5 업그레이드 후 폴리필 제거&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 분류 --&amp;gt;&lt;br /&gt;
[[분류:PHP]] [[분류:PHP/8.5]] [[분류:배열]]&lt;/div&gt;</summary>
		<author><name>Gaon12</name></author>
	</entry>
</feed>