배열의 첫 번째 요소를 가져옵니다.
어레이가 있습니다.
array( 4 => 'apple', 7 => 'orange', 13 => 'plum' )
이 배열의 첫 번째 요소를 얻고 싶습니다.예상 결과: 문자열 apple
한 가지 요건: 참조에 의한 패스로는 할 수 없습니다.array_shift
좋은 해결책이 아닙니다.
이거 어떻게 해?
원래 답변이지만 비용이 많이 듭니다(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];
Mike가 지적한 것처럼 (가능한 한 쉬운 방법)
$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // Echoes "apple"
키를 취득하는 경우: (리셋 후 실행)
echo key($arr); // Echoes "4"
혼합 리셋( 어레이 | 오브젝트 & $array );
설명:
reset()은 배열의 내부 포인터를 첫 번째 요소로 되감아 첫 번째 배열 요소의 값을 반환합니다.배열이 비어 있으면 FALSE를 반환합니다.
$first_value = reset($array); // First element's value
$first_key = key($array); // First element's key
current($array)
PHP 설명서에 따라 배열의 첫 번째 요소를 반환합니다.
모든 어레이에는 "현재" 요소에 대한 내부 포인터가 있으며, 이 포인터는 어레이에 삽입된 첫 번째 요소로 초기화됩니다.
배열 포인터의 가 바뀌기 하고, '배열 포인터'를 사용해야 .그 이외의 경우에는reset()
의 첫 합니다.
reset()은 배열의 내부 포인터를 첫 번째 요소로 되감고 첫 번째 배열 요소의 값을 반환합니다.
의 예current()
★★★★★★★★★★★★★★★★★」reset()
$array = array('step one', 'step two', 'step three', 'step four');
// by default, the pointer is on the first element
echo current($array) . "<br />\n"; // "step one"
//Forward the array pointer and then reset it
// skip two steps
next($array);
next($array);
echo current($array) . "<br />\n"; // "step three"
// reset pointer, start again on step one
echo reset($array) . "<br />\n"; // "step one"
$arr = $array = array( 9 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // echoes 'apple'
현재 포인터 위치를 잃지 않으려면 배열에 대한 별칭을 만드십시오.
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) ];
N번째 요소는 언어 구성인 "list"를 사용하여 얻을 수 있습니다.
// 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);
PHP 5.4+:
array_values($array)[0];
일부 어레이는 다음과 같은 기능에서 작동하지 않습니다.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;
}
예를 들어 다음과 같습니다.
$array = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
사용방법:
$array[key($array)]
첫 번째 요소를 얻거나
key($array)
첫 번째 키를 얻습니다.
또는 먼저 링크를 해제할 수도 있습니다.
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;
}
참고로, 어레이의 마지막 요소에 대한 또 다른 답변이 있습니다.
심플하게!여기에는 많은 정답이 있지만 모든 혼란을 최소화하기 위해 이 두 가지가 작동하여 많은 오버헤드를 줄입니다.
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));
간단한 조작:
array_shift(array_slice($array,0,1));
는 할 이다.echo current($array)
$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
foreach($arr as $first) break;
echo $first;
출력:
apple
PHP 7.3은 원래 어레이를 수정하지 않고 임시 객체를 생성하지 않고 어레이의 첫 번째 키와 마지막 키를 직접 가져오기 위한 두 가지 기능을 추가했습니다.
"PHP 7.3.0 이전 버전에서 이 기능을 제공하는 방법은 여러 가지가 있습니다.array_keys()를 사용할 수 있지만 이는 다소 비효율적일 수 있습니다.reset() 및 key()를 사용할 수도 있지만 내부 배열 포인터가 변경될 수 있습니다.효율적인 솔루션. 내부 어레이 포인터를 변경하지 않고 polyfill로 기재되어 있습니다.
<?php
if (!function_exists('array_key_first')) {
function array_key_first($arr) {
foreach($arr as $key => $unused) {
return $key;
}
return NULL;
}
}
if (!function_exists('array_key_last')) {
function array_key_last($arr) {
return array_key_first(array_reverse($arr, true));
}
}
?>
$myArray = array (4 => 'apple', 7 => 'orange', 13 => 'plum');
$arrayKeys = array_keys($myArray);
// The first element of your array is:
echo $myArray[$arrayKeys[0]];
$array=array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
$firstValue = each($array)[1];
훨씬 더 입니다.array_values()
이유는each()
함수가 전체 어레이를 복사하지 않습니다.
상세한 것에 대하여는, http://www.php.net/manual/en/function.each.php 를 참조해 주세요.
Kludy 방법은 다음과 같습니다.
$foo = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
function get_first ($foo) {
foreach ($foo as $k=>$v){
return $v;
}
}
print get_first($foo);
이러한 작업의 대부분은! 단, 간단한 단일 회선(리소스 부족) 문의:
$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)
이 방법은 매우 효과적이지만, 제 추가 답변도 봐주세요.
용도:
$first = array_slice($array, 0, 1);
$val= $first[0];
" " " 입니다.array_slice
키를 보존하지 않기 때문에 0을 인덱스로 안전하게 사용할 수 있습니다.
게임 시작은 조금 늦었지만, 아이일 때 어레이 요소가 어레이 안에 포함되어 있기 때문에 첫 번째 어레이 요소의 문자열 표현만 얻을 수 없다는 문제가 있었습니다.PHP의 기능을 사용하여 관리했습니다.
<?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...
?>
현재의 모든 솔루션이 이 답변에 도달하도록 도와줬기 때문에 언젠가 누군가가 도움이 되었으면 합니다!
<?php
$arr = array(3 => "Apple", 5 => "Ball", 11 => "Cat");
echo array_values($arr)[0]; // Outputs: Apple
?>
기타 예:
<?php
$arr = array(3 => "Apple", 5 => "Ball", 11 => "Cat");
echo current($arr); // Outputs: Apple
echo reset($arr); // Outputs: Apple
echo next($arr); // Outputs: Ball
echo current($arr); // Outputs: Ball
echo reset($arr); // Outputs: Apple
?>
여기서 array_values를 사용하는 것이 최선이라고 생각합니다.그 함수의 결과에서 인덱스 0의 값을 반환하면 'Apple'을 얻을 수 있습니다.
두 가지 솔루션이 있습니다.
해결책 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]];
ArrayIterator 클래스를 사용할 것을 제안하지 않았습니다.
$array = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
$first_element = (new ArrayIterator($array))->current();
echo $first_element; //'apple'
OP의 참조 규정에 따라 를 우회합니다.
필자는 배열의 첫 번째 요소를 어떤 함수(예를 들어 mysql_fetch_row 등)에서 가져온 후 "변수만 참조에 의해 전달되어야 한다"는 STRICT를 생성하지 않고 얻을 방법을 찾고 있었을 것입니다.
그렇다면, 여기에 설명된 거의 모든 방법이 이 메시지를 받게 될 것입니다.또, 어레이(또는 그 일부)를 복제하기 위해서, 대량의 메모리를 사용하고 있는 기업도 있습니다.이를 회피하는 간단한 방법은 다음 함수를 호출하기 전에 값을 인라인으로 할당하는 것입니다.
$first_item_of_array = current($tmp_arr = mysql_fetch_row(...));
// or
$first_item_of_array = reset($tmp_arr = func_get_my_huge_array());
이렇게 하면 화면이나 로그에 STRICT 메시지가 표시되지 않고 어레이가 추가되지 않습니다.인덱싱된 AND 어레이와 연결 어레이 모두에서 작동합니다.
를 사용하여 관련 배열의 키에 수치 인덱스 배열로 액세스하고 다시 어레이의 키로 사용할 수 있습니다.
솔루션이 다음과 같은 경우:
(키가 있는 배열은 0 베이스의 인덱스이므로 첫 번째 요소는 인덱스0 입니다).
변수를 사용하고 1을 빼면 논리를 얻을 수 있습니다.1 => 'apple'
.
$i = 1;
$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
echo $arr[array_keys($arr)[$i-1]];
출력:
apple
단순하게 하기 위해 다음 사항을 사용합니다.
$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
echo $arr[array_keys($arr)[0]];
출력:
apple
제1의 방법에 의해, 제1의 요소 뿐만이 아니라, 관련 배열을 인덱스 어레이와 같이 취급할 수 있다.
어레이의 내부 포인터를 만지작거리는 것은 싫지만 두 번째 어레이를 구축하는 것은 비효율적입니다.array_keys()
또는array_values()
그래서 보통 다음과 같이 정의합니다.
function array_first(array $f) {
foreach ($f as $v) {
return $v;
}
throw new Exception('array was empty');
}
현실에서 이것은 그렇게 간단한 반응이 아니다.일부 라이브러리에서 볼 수 있는 가능한 응답의 예를 들어 보겠습니다.
$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
이는 [count()-1]보다 고속이며, 이들 3개의 속도는array_values
그리고.array_slice
.
언급URL : https://stackoverflow.com/questions/1921421/get-the-first-element-of-an-array
'source' 카테고리의 다른 글
python * 연산자의 고유 이름? (0) | 2023.01.12 |
---|---|
Java의 큰 수 (0) | 2023.01.12 |
MySQL vs. JSON - 왜? (0) | 2023.01.02 |
문자열에서 줄 바꿈(문자 없음!)을 제거하는 방법 (0) | 2023.01.02 |
MySQL 한 테이블에서 모든 열을 선택하고 다른 테이블에서 일부 열을 선택합니다. (0) | 2023.01.02 |