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


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_valuesarray_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.