배열의 첫 번째 요소를 가져옵니다


1071

배열이 있습니다.

array( 4 => 'apple', 7 => 'orange', 13 => 'plum' )

이 배열의 첫 번째 요소를 얻고 싶습니다. 예상 결과 : 문자열 apple

한 요구 사항 : 참조에 의해 전달 수행 할 수 없습니다 때문에, array_shift좋은 솔루션이 아닙니다.

어떻게해야합니까?


1
당신은 무엇을 의미합니까, 참조로 할 수 없습니까?
— cjk

&$array매개 변수로 사용 하면 기능이 작동하지 않아야합니다 .
— hsz December

4
"실제로"참조 할 수 없다는 것은 데이터베이스에서 배열이 동적으로 반환되고 첫 번째 요소를 가져 오기 전에 변수를 배열로 전달하고 싶지 않다는 것입니다. 이것으로부터. 내가 옳다면, 아래에 제공된 모든 솔루션 (허용 된 답변 포함)의 대다수가 충분하지 않습니다.
— cartbeforehorse

가져 오거나 가져와 기존 어레이에서 제거해야합니까?
— Jo Smo

배열의 기본 사용을 위해이 링크 technofusions.com/introduction-to-arrays-in-php를
— Vikrant Vir Bhalla

답변:


1367

원래 답변이지만 비용이 많이 든다 (O (n)) :

array_shift(array_values($array));

O (1)에서 :

array_pop(array_reverse($array));

기타 사용 사례 등

(배열 포인터 재설정의 의미에서) 수정 $array이 문제가 아닌 경우 다음을 사용할 수 있습니다.

reset($array);

배열 "복사"가 필요한 경우 이론적으로 더 효율적이어야합니다.

array_shift(array_slice($array, 0, 1));

PHP 5.4+ 사용시 (비어 있으면 색인 오류가 발생할 수 있음) :

array_values($array)[0];

77
array_values ​​()로 원래 배열을 수정하는 것을 막기위한 영리한 해결 방법으로 +1
— ChrisR

44
<b> 엄격한 표준 </ b> : 변수 만 참조로 전달해야합니다. 좋은 해결책 btw
— Simone

191
조금 과잉 아닌가요? 배열에 수천 개의 요소가 포함되어 있으면 어떻게됩니까? 첫 번째 요소를 얻기 위해 완전히 새로운 배열을 만드는 것이 정당합니까? list()그리고 reset()내 의견에 훨씬 더 좋은 솔루션입니다.
— Martin Dimitrov 2016 년

33
동의한다. 현재 값을 재설정하고 반환하는 한 줄에 비해 총 오버 킬 및 과도한 자원이 무겁습니다. reset ($ array);
— zmonteca

48
-1 위의 주석가들이 말했듯이. 101 개의 공감대가 있다는 것은 당황 스럽습니다.
— 궤도에서 가벼움 경주

789

Mike가 지적한대로 (가장 쉬운 방법) :

$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' )
echo reset($arr); // Echoes "apple"

키를 얻으려면 (재설정 후 실행)

echo key($arr); // Echoes "4"

에서 PHP의 설명서 :

혼합 재설정 (배열 & $ array );

기술:

reset () 은 첫 번째 요소에 대한 배열의 내부 포인터를 되 감고 첫 번째 배열 요소의 값을 반환하거나 배열이 비어 있으면 FALSE를 반환합니다.


재설정을 위해 참조로 전달되지만 원래 배열은 수정되지 않습니다. 나는 그것이 hsz가 그것을 참조로 전달하고 싶지 않은 이유라고 생각합니다.
— Dennis Jamin

10
배열의 반복자가 수정되었습니다. foreach대상 배열과 함께이 작업을 수행하면 문제가 해결 됩니다.
— Zenexer

2
@ Zenexer 이것은 항상 (보통) 사실이 아닙니다. 일반적으로 실제로 foreach는 반복되는 배열을 복사합니다.
— Luke Cousins ​​2016

1
@Angger 재설정 후, 당신은 전화 key($arr)를하면 '4'를 얻을 것입니다 (응답에 추가됨)
— lepe

3
@Zenexer 나 Luke Cousins가 옳은 것은 아닙니다. 1) foreach는 배열의 internat 포인터를 사용하지 않고 대신 자체 포인터를 만듭니다. foreach 내부의 reset 호출을 쉽게 확인할 수 있습니다. 루프는에서 아무런 영향을 미치지 않습니다 reset(). 2) 아니요, foreach는 어레이의 복사본을 만들지 않습니다 !!! 그것은 단지 자신의 포인터를 만듭니다 (기존 포인터의 사본조차도 아닙니다 next()-foreach 전에 호출하기도 쉽습니다 ).
— dmikam

278
$first_value = reset($array); // First element's value
$first_key = key($array); // First element's key

2
실제로 테스트하지는 않았지만이 방법이 가장 효율적인 것 같습니다.
— mason81

4
문제는 키가 아닌 가치를 묻는 질문입니다. ($ 배열) 따라서 전류 대신 키 ($ 어레이) 중 표기
— zmonteca

4
@zmonteca $ first_value = 리셋 ($ 배열); 여기서 값을 얻습니다. reset () 함수는 배열 내부 포인터를 되 감고 첫 번째 요소를 반환합니다.
— S3Mi

1
가장 좋은 답변! 첫 번째 값을 얻기 위해 key () 동등성을 찾고있었습니다. 도움이됩니다!
— Alain Tiemblo

98
$arr = array( 9 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // echoes 'apple'

현재 포인터 위치를 잃지 않으려면 배열의 별칭을 만드십시오.


1
그것을 얻지 못했다, 무슨 뜻이야? 첫 번째 키가 다른 키보다 큰지 잘 작동합니다.
— yoda

29
+1 FYI는 reset()이미 첫 번째 요소를 반환하므로 사용할 필요가 없습니다 current()– echo reset($arr)충분해야합니다
— Mike

@ 마이크하지만 당신은 선호 할 수 current하는 resetPHP 공지 / 참조 경우에 발생 오류, 예를 방지하기 current(array_filter(...));에 3v4l을 .
— CPHPython

91

current($array)PHP manual에 따르면 배열의 첫 번째 요소를 얻을 수 있습니다 .

모든 배열에는 배열에 삽입 된 첫 번째 요소로 초기화되는 "현재"요소에 대한 내부 포인터가 있습니다.

따라서 배열 포인터를 재배치 할 때까지 작동합니다. 그렇지 않으면 배열을 재설정해야합니다.


4
왜 이것이 간단하고 정확하게 질문에 대답하기 때문에 이것이 받아 들여지지 않은지 모르겠습니다.
— relipse

26
current($array)배열 포인터가 "현재"첫 번째 요소를 가리키는 경우에만 작동 reset($array)합니다. 그렇지 않으면 필요합니다.
— Jon

6
그것은 보인다 current()는 PHP 문서는이를 반영하지 않지만, 더 이상 참조가 필요합니다. 그래서 이것이 최선의 해결책이라고 생각합니다.
— Ryan

@Ryan은 동의했지만이 솔루션은 2014 년 2 년 전에 동일한 스레드에 대한 다른 대답으로 제공되었습니다 .
— CPHPython

70

언어 구조 "list"로 N 번째 요소를 얻을 수 있습니다.

// First item
list($firstItem) = $yourArray;

// First item from an array that is returned from a function
list($firstItem) = functionThatReturnsArray();

// Second item
list( , $secondItem) = $yourArray;

이 array_keys기능을 사용하면 키에 대해 동일한 작업을 수행 할 수 있습니다.

list($firstKey) = array_keys($yourArray);
list(, $secondKey) = array_keys($yourArray);

2
이것이 바로 내가하는 일입니다. list($first_value) = $my_array;제 생각에는 가장 좋은 옵션입니다. 여기에 제시된 다른 답변의 문제는 없습니다. "오버 킬"은 복사 또는 배열을 만들거나 새로운 것을 만들지 않기 때문에 "과잉 행동"이 없습니다. "참조"없음 : 배열이 수정되지 않습니다. 없음 "리셋 없다"배열의 내부 포인터 변경없이 ...
— J. 브루니

6
매우 우아한 솔루션이지만 배열이 비어 있으면 E_NOTICE가 발생합니다.
— Tgr

1
@Mike 예,하지만 더 이상 우아하지 않습니다 :)
— Tgr

13
그렇지 않나요?! 배열 키가있는 경우에만 작동 int하고 시도 list($firstItem) = array('key1' => 'value1');하면 오류가 발생합니다Notice: Undefined offset: 0
— Marco Demaio

12
명확히하려면 : list($x) = foo();와 같습니다 $x = foo()[0];. 정수 인덱스 배열조차 키 0의 요소를 가질 수 없기 때문에 이것이 "첫 번째 항목 가져 오기"와 반드시 동일하지는 않습니다. 필자의 경우 "list ($ order) = get_order ($ user) ; " 그러나 "get_order"는 일반적으로 0이 아닌 ID로 키를 입력 한 주문을 반환했습니다. @Sergiy가 말했듯이 array_values ​​()는이를 해결하지만 코드의 효율성과 (가장 중요한) 가독성을 떨어 뜨립니다.
— Warbo

55

PHP 5.4 이상 :

array_values($array)[0];

이것은 최신의 최고를 실행하는 멋진 사람들을위한 것입니다. ;)
— Zenexer

1
그는 2013 년 10 월에 자신의 답변을 편집하여 4 월에 추가 한 답변을 포함 시켰습니다.
— Samer Ata

PHP 4 :$array_values = array_values($array); $value = $array_values[0];
— zdick

38

PHP 7.3 은 원래 배열을 수정하거나 임시 객체를 만들지 않고 직접 배열의 첫 번째 키와 마지막 키를 가져 오는 두 가지 기능을 추가했습니다 .

의미 적으로 의미있는 것 외에도 이러한 함수는 배열 포인터를 움직이지 않습니다 foreach.

키가 있으면 키로 직접 값을 얻을 수 있습니다.


예 (모두 PHP 7.3 이상 필요)

첫 번째 / 마지막 키와 값 얻기 :

$my_array = ['IT', 'rules', 'the', 'world'];

$first_key = array_key_first($my_array);
$first_value = $my_array[$first_key];

$last_key = array_key_last($my_array);
$last_value = $my_array[$last_key];

배열을 비울 수 없다고 가정하면 첫 번째 / 마지막 값을 하나의 라이너로 가져옵니다 .

$first_value = $my_array[ array_key_first($my_array) ];

$last_value = $my_array[ array_key_last($my_array) ];

빈 배열의 기본값을 사용하여 첫 번째 / 마지막 값을 한 줄짜리로 가져 오기 :

$first_value = empty($my_array) ? 'default' : $my_array[ array_key_first($my_array) ];

$last_value = empty($my_array) ? 'default' : $my_array[ array_key_last($my_array) ];

로 단축 널 병합 연산자 , 일반적으로는 null 기본값은 그렇다 : $first_value = $my_array[array_key_first($my_array)] ?? null;
— 미첼 맥 케나

29

다음을 가정하십시오.

$array = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );

그냥 사용하십시오 :

$array[key($array)]

첫 번째 요소를 얻거나

key($array)

첫 번째 키를 얻을 수 있습니다.

또는 제거하려는 경우 첫 번째 링크를 해제 할 수 있습니다.


9
current그렇다면 단순히 사용하지 않습니까?
— Marco Demaio

27

일부 배열 함수처럼 작동하지 않습니다 list, reset또는 current. 어쩌면 그것들은 "가짜"배열 일 수도 있습니다-예를 들어 부분적으로 ArrayIterator를 구현합니다.

배열에 관계없이 첫 번째 값을 가져 오려면 반복자를 단락시킬 수 있습니다.

foreach($array_with_unknown_keys as $value) break;

그런 다음 값을 사용할 수 있으며 $value첫 번째 반복 후에 루프가 중단됩니다. 이것은 잠재적으로 큰 배열을 array_unshift (array_values ​​($ arr))와 같은 함수에 복사하는 것보다 효율적입니다.

이 방법으로 키를 잡을 수도 있습니다.

foreach($array_with_unknown_keys as $key=>$value) break;

함수에서 이것을 호출하는 경우 간단히 반환하십시오.

function grab_first($arr) {
    foreach($arr as $value) return $value;
}

함수 호출이 아닌 foreach 언어 구문을 사용하기 때문에 이것이 가장 빠른 방법 중 하나라고 생각합니다 (더 비쌉니다). designcise.com/web/tutorial/…
— Ildar Amankulov

19

라 라벨의 도우미들로부터 :

function head($array)
{
    return reset($array);
}

배열이 값으로 함수에 전달되면 reset () 은 배열 사본의 내부 포인터에 영향을 미치며 원래 배열에 닿지 않습니다 ( false배열이 비어 있으면 반환 됨 ).

사용 예 :

$data = ['foo', 'bar', 'baz'];

current($data); // foo
next($data); // bar
head($data); // foo
next($data); // baz

또한 여기에 대안이 있습니다. 그건 아주 소폭 빠르게,하지만 더 흥미 롭군요. 배열이 비어 있으면 쉽게 기본값을 변경할 수 있습니다.

function head($array, $default = null)
{
    foreach ($array as $item) {
        return $item;
    }
    return $default;
}

레코드 의 경우 배열의 마지막 요소에 대한 또 다른 대답이 있습니다.


17

이것을 단순하게 유지하십시오! 여기에는 많은 정답이 있지만 모든 혼란을 최소화하기 위해이 두 가지 작업을 수행하고 많은 오버 헤드를 줄입니다.

key($array)배열의 첫 번째 키를
current($array)얻습니다 배열 의 첫 번째 값을 얻습니다


편집 :
아래 의견에 대해. 다음 예제는 출력됩니다 :string(13) "PHP code test"

$array = array
(
   '1'           => 'PHP code test',  
   'foo'         => 'bar', 5 , 5 => 89009, 
   'case'        => 'Random Stuff: '.rand(100,999),
   'PHP Version' => phpversion(),
   0             => 'ending text here'
);

var_dump(current($array));

11
어. current현재 요소와 같습니다. 배열이 실제로 시작되도록 배열의 시작 부분으로 포인터를 재설정해야합니다.
— waterloomatt

current ()는 첫 번째 요소가 아닌 현재 요소를 가져옵니다. 그것은 다르다.
— Amirhossein Tarmast

배열에 요소가 하나만 있으면 current가 작동합니다.
— Zameer Fouzan


14

나는 할 것이다 echo current($array).


1
@hsz 중요하지 않고, current()비 참조가 전달 될 때 오류가 발생하지 않습니다. 포인터가 여전히 시작 부분에 있다면 작동합니다.
— Dan Lugg

그러나 그것은 당신의 로그를 더럽고 잘 만드는 통지를 생성합니다 ... 중요하지 않은 경우에도 통지를 제거해야합니다
— dmikam

1
@dmikam 아니오 그렇지 않습니다. 실제로 reset는 "변수 만 참조로 전달해야합니다"라는 알림을 표시하지만 다음과 같은 경우 current는 아닙니다. Online PHP Editor example ofcurrent(array_filter(...)); .
— CPHPython

@CPHPython, 당신이 옳은 것 같습니다 ... PHP 4의 오래된 시대에서 현재의 아이디어를 가지고있는 것처럼 보입니다. 실제로 치명적인 오류가 발생합니다 : sandbox.onlinephpfunctions.com/code/… current 사용에서 볼 수있는 유일한 문제는 반환 된 요소가 배열의 첫 번째 요소임을 보증하지 않습니다 (내부 포인터는 호출 된 함수에 의해 수정 될 수 있음). 사실상 배열의 임의 요소를 반환 할 수 있습니다.
— dmikam

1
@CPHPython A는 인공 예를 비트,하지만 보여줍니다 아니라 내 생각 : sandbox.onlinephpfunctions.com/code/...은 당신이 어떤 함수에서 배열을받을 수 상상 그 사용 next(), end()또는 수정 배열의 내부 포인터가 다른 기능. 내 예제 current()에서 내부 포인터가 배열의 "범위를 벗어남"때문에 null을 반환합니다. 그러나 그것은 '가상'으로 임의의 / 무작위 요소를 가리킬 수도 있습니다.
— dmikam

13
$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
foreach($arr as $first) break;
echo $first;

산출:

apple

10
$myArray = array (4 => 'apple', 7 => 'orange', 13 => 'plum');
$arrayKeys = array_keys($myArray);

// The first element of your array is:
echo $myArray[$arrayKeys[0]];

나는 그 대답이 받아 들여진 방식으로 가지 않았다. 사용 당신의 감사
— JayKandari

9
$array=array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );

$firstValue = each($array)[1];

이보다 훨씬 효율적입니다 array_values()each()함수가 전체 배열을 복사하지 않기 때문에이 방법 입니다.

자세한 내용은 http://www.php.net/manual/en/function.each.php를 참조하십시오 .


because the each() function does not copy the entire array.+1

2
그러나 내부 포인터가 처음에 없으면 첫 번째 요소를 얻지 못할 것입니다.
— Carlos Goce

그러나 each ()는 참조로 배열을 받고 초기 질문의 요구 사항은 그렇지 않습니다.
— dmikam

8

클루 지 방식은 다음과 같습니다.

$foo = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );

function get_first ($foo) {
    foreach ($foo as $k=>$v){
        return $v;
    }
}

print get_first($foo);

3
적어도 당신은 정직합니다-그것은 엉뚱합니다! 그러나 그것은 효과가 있으며 위의 list () 기술을 배울 때까지 과거에 사용했습니다.
— random_user_name

1
이 작업을 수행하는 경우 어쨌든 호출 reset()되기 전에 배열 포인터가 재설정되는 것처럼 사용할 수도 있습니다 foreach.
— Tyzoid


7

이 작업의 대부분! 빠른 단일 회선 (낮은 리소스) 호출의 경우 :

$array = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
echo $array[key($array)];

// key($array) -> will return the first key (which is 4 in this example)

이것이 효과가 있고 잘 작동하지만 추가 답변을 참조하십시오 : https : //.com/a/48410351/1804013


5
이는 current($array)어쨌든 배열의 내부 포인터가 첫 번째 요소에 있어야하는 을 사용하는 것과 같습니다 .이 경우 echo reset($array)가장 적합합니다.
— Tyzoid

@Tyzoid 그는 실제로 당신의 제안과 함께 여기에 다른 답변을 썼지 만, 당신의 설명을 생략했습니다 ... 감사합니다.
— CPHPython

@ Tyzoid : 나는 한동안 추가 답변 / 업데이트를했다 : stackoverflow.com/a/48410351/1804013
— tfont

5

array_values를 사용하는 것이 가장 좋습니다. 해당 함수의 결과에서 인덱스 0의 값을 반환하여 'apple'을 얻을 수 있습니다.


5

이것은 게임에 약간 늦었지만 내 배열에 배열 요소가 자식으로 포함 된 문제가 발생하여 첫 번째 배열 요소의 문자열 표현을 얻을 수 없었습니다. PHP의 current()기능 을 사용하여 이것을 관리했습니다.

<?php
    $original = array(4 => array('one', 'two'), 7 => array('three', 'four'));
    reset($original);  // to reset the internal array pointer...
    $first_element = current($original);  // get the current element...
?>

현재의 모든 솔루션 덕분 에이 답변에 도달하는 데 도움이되었습니다.


4

사용하다:

$first = array_slice($array, 0, 1);  
$val= $first[0];

기본적으로 array_slice키를 유지하지 않으므로 인덱스로 0을 안전하게 사용할 수 있습니다.


4

두 가지 솔루션.

해결 방법 1-키를 사용하십시오. 사용할 수 없다고 말하지 않았습니다. :)

<?php
    // Get the first element of this array.
    $array = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );

    // Gets the first element by key
    $result = $array[4];

    // Expected result: string apple
    assert('$result === "apple" /* Expected result: string apple. */');
?>

해결 방법 2-array_flip () + key ()

<?php
    // Get first element of this array. Expected result: string apple
    $array = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );

    // Turn values to keys
    $array = array_flip($array);

    // You might thrown a reset in just to make sure
    // that the array pointer is at the first element.
    // Also, reset returns the first element.
    // reset($myArray);

    // Return the first key
    $firstKey = key($array);

    assert('$firstKey === "apple" /* Expected result: string apple. */');
?>

해결 방법 3-array_keys ()

echo $array[array_keys($array)[0]];

2

이것은 현실 세계에서 그렇게 간단한 반응이 아닙니다. 일부 라이브러리에서 찾을 수있는 가능한 응답의 예가 있다고 가정하십시오.

$array1 = array();
$array2 = array(1,2,3,4);
$array3 = array('hello'=>'world', 'foo'=>'bar');
$array4 = null;

var_dump('reset1', reset($array1));
var_dump('reset2', reset($array2));
var_dump('reset3', reset($array3));
var_dump('reset4', reset($array4)); // Warning

var_dump('array_shift1', array_shift($array1));
var_dump('array_shift2', array_shift($array2));
var_dump('array_shift3', array_shift($array3));
var_dump('array_shift4', array_shift($array4)); // Warning

var_dump('each1', each($array1));
var_dump('each2', each($array2));
var_dump('each3', each($array3));
var_dump('each4', each($array4)); // Warning

var_dump('array_values1', array_values($array1)[0]); // Notice
var_dump('array_values2', array_values($array2)[0]);
var_dump('array_values3', array_values($array3)[0]);
var_dump('array_values4', array_values($array4)[0]); // Warning

var_dump('array_slice1', array_slice($array1, 0, 1));
var_dump('array_slice2', array_slice($array2, 0, 1));
var_dump('array_slice3', array_slice($array3, 0, 1));
var_dump('array_slice4', array_slice($array4, 0, 1)); // Warning

list($elm) = $array1; // Notice
var_dump($elm);
list($elm) = $array2;
var_dump($elm);
list($elm) = $array3; // Notice
var_dump($elm);
list($elm) = $array4;
var_dump($elm);

당신이 볼 수 있듯이, 우리는 경우에 따라 잘 작동하지만 전부는 아닙니다.

내 의견으로는, 당신은 그 배열 만 배열로 처리해야합니다.

이제 우리가 항상 다음과 같이 배열한다고 가정하면 성능에 대해 이야기합니다.

$elm = empty($array) ? null : ...($array);

...you would use without errors:
$array[count($array)-1];
array_shift
reset
array_values
array_slice

array_shift보다 빠른 인 reset, 이들 세보다 빠른 -보다 [1 카운트 ()보다 빠른 것, array_values및 array_slice.


2

필자는 저자 가 STRICT "변수 만 참조로 전달해야"하지 않고 일부 함수 ( 예 : mysql_fetch_row) 에서 배열의 첫 번째 요소를 가져 오는 방법을 찾고 있다고 생각합니다 .

그렇다면 여기에 설명 된 거의 모든 방법 이이 메시지를 얻습니다. 그중 일부는 배열 (또는 그 일부)을 복제하는 많은 추가 메모리를 사용합니다. 이를 피하는 쉬운 방법은 해당 함수를 호출하기 전에 인라인 값을 지정하는 것입니다.

$first_item_of_array = current($tmp_arr = mysql_fetch_row(...));
// or
$first_item_of_array = reset($tmp_arr = func_get_my_huge_array());

이렇게하면 화면이나 로그에 STRICT 메시지가 표시되지 않으며 추가 배열을 만들지 않습니다. 인덱스 배열 과 연관 배열 모두에서 작동 합니다.


1

"목록"예제가 마음에 들지만 "목록"은 과제의 왼쪽에서만 작동합니다. 변수를 할당하지 않으려면 임시 이름을 작성해야합니다. 임시 이름은 최대한 범위를 오염시키고 최악의 경우 기존 값을 덮어 씁니다.

list($x) = some_array();
var_dump($x);

위의 값은 기존의 $ x 값을 덮어 쓰며 $ x 변수는이 범위가 활성화되어있는 한 (이 함수 / 방법의 끝이거나 최상위에있는 경우 영원히) 중단됩니다. 이것은 call_user_func와 익명 함수를 사용하여 해결할 수는 있지만 어수선합니다.

var_dump(call_user_func(function($arr) { list($x) = $arr; return $x; },
                        some_array()));

이와 같은 익명 함수를 사용하면 참조 및 전달을 사용하더라도 reset 및 array_shift로 실제로 벗어날 수 있습니다. 함수를 호출하면 인수가 바인드되므로이 인수는 참조로 전달 될 수 있습니다.

var_dump(call_user_func(function($arr) { return reset($arr); },
                        array_values(some_array())));

그러나 call_user_func가이 임시 할당을 내부적으로 수행하므로 실제로는 과도합니다. 이를 통해 참조 별 전달 함수를 경고 또는 오류없이 값별 전달 인 것처럼 처리 할 수 ​​있습니다.

var_dump(call_user_func('reset', array_values(some_array())));

1

Sarfraz가 게시 한 내용의 작은 변경 사항은 다음과 같습니다.

$array = array(1, 2, 3, 4, 5);
$output = array_slice($array, 0, 1);
print_r ($output);

1

난 안 배열의 내부 포인터와 바이올린을 좋아한다, 그러나 함께 두 번째 배열을 구축하는 것이 비효율적 array_keys()또는 array_values()나는 보통이 정의 있도록 :

function array_first(array $f) {
    foreach ($f as $v) {
        return $v;
    }
    throw new Exception('array was empty');
}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.