PHP:함수에서 반환되는 배열의 단일 멤버를 참조할 수 있나요?

StackOverflow https://stackoverflow.com/questions/68711

  •  09-06-2019
  •  | 
  •  

문제

PHP에서 다음이 한 줄로 가능한지 어떻게 알 수 있습니까?

<?php
$firstElement = functionThatReturnsAnArray()[0];

...'걸어'는 아닌 것 같습니다.이 작업을 2단계로 수행해야 합니다.

<?php
$allElements = functionThatReturnsAnArray();
$firstElement = $allElements[0];

...그냥 궁금해서요. 제가 사용하는 다른 언어에서는 이런 일이 허용되는데, PHP에서 이것을 놓치기에는 너무 게으릅니다...어떤 통찰력이라도 감사하겠습니다 ...

도움이 되었습니까?

해결책

노력하다:

<?php
$firstElement = reset(functionThatReturnsAnArray());

배열의 첫 번째 요소를 찾고 있는 경우.

다른 팁

@스콧 레이넨

그건 사실이 아니야.이것은 작동합니다:

list(,,$thirdElement) = $myArray;

불행히도 PHP에서는 불가능합니다.이를 수행하려면 두 줄을 사용해야합니다.

~할 수 있다 한 줄로 하세요!사용 배열_시프트().

<?php

echo array_shift(i_return_an_array());

function i_return_an_array() {
    return array('foo', 'bar', 'baz');
}

이것이 실행되면 "foo".

list()는 여기서 유용합니다.첫 번째 배열 요소를 제외한 모든 요소는 쓸모 없는 변수로 채워야 합니다.예를 들어:

list( $firstElement ) = functionThatReturnsAnArray();
list( $firstElement , $secondElement ) = functionThatReturnsAnArray();

등등.

나는 실제로 다음과 같은 목적으로 작성한 편의 함수를 사용합니다.

/**
 * Grabs an element from an array using a key much like array_pop
 */
function array_key_value($array, $key) {
    if(!empty($array) && array_key_exists($key, $array)) {
        return $array[$key];
    }
    else {
        return FALSE;
    }
}

그런 다음 다음과 같이 호출하면 됩니다.

$result = array_key_value(getMeAnArray(), 'arrayKey');

당신이 사용할 수있는 array_slice(), 다음과 같습니다:

$elementX = array_slice(functionThatReturnsAnArray(), $x, 1);

또한 end() 언급되지 않았습니다.배열의 마지막 요소를 반환합니다.

어느 하나 current($array) 또는 array_shift($array) 작동할 것이고, 전자는 떠날 것이다. 정렬 손대지 않은.

nickf, 알아가서 다행이네요, 고마워요.불행히도 몇 개의 쉼표를 넘어서는 가독성 문제가 있습니다.

위의 내용 중 무엇을 하고 있는지 설명하려면 주석이 필요하므로 두 줄이 됩니다.나는 다음과 같이 하는 것이 더 간단하다고 생각합니다.

$element = functionThatReturnsArray();
$element = $element[0];

이렇게 하면 추가 변수를 사용하지 않고 수행 중인 작업이 명확해집니다.

$firstItem = current(returnsArray());

글쎄, 나는 다른 함수를 호출하지 않고도 원하는 것을 얻을 수 있는 몇 가지 방법을 찾았습니다.

$firstElement = ($t = functionThatReturnsAnArray()) ? $t[0] : false;

문자열의 경우 사용할 수 있습니다

$string = (($t = functionThatReturnsAnArray())==0) . $t[0];

..흥미로운 문제

드라코

직접 편집할 수 없는 것 같아서 내장 기능이나 라이브러리 기능인 것으로 추측됩니다.필요한 출력을 제공하기 위해 래퍼 함수를 ​​만드는 것이 좋습니다.

function functionThatReturnsOneElement( $arg )
{
    $result = functionThatReturnsAnArray( $arg );
    return $result[0];
}
$firstElement = functionThatReturnsOneElement();

이것이 불가능하다는 것을 아는 한, 나는 이것을 여러 번 직접 해보고 싶었습니다.

http://us3.php.net/reset

PHP 버전 5에서만 사용할 수 있습니다.

항상 첫 번째 요소인 경우 함수가 배열의 첫 번째 항목만 반환하도록 하는 것을 고려해야 합니다.이것이 가장 일반적인 경우라면 약간의 멋짐을 사용할 수 있습니다.

function func($first = false) {
    ...
    if $first return $array[0];
    else return $array;
}

$array = func();
$item = func(true);

내 PHP는 약간 녹슬었지만 작동한다고 확신합니다.

array_shift() 및 array_pop()을 볼 수도 있습니다.

이것은 아마도 가능할 수도 있습니다:

array(func())[0][i];

0은 함수입니다.

때로는 함수를 변경하여 선택적으로 전체 배열 대신 요소를 반환할 수도 있습니다.

<?php
function functionThatReturnsAnArray($n = NULL) {
  return ($n === NULL ? $myArray : $myArray[$n]);
}
$firstElement = functionThatReturnsAnArray(0);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top