2012-01-17 2 views
13

이것이 가능한지 확실하지 않지만 그것이있는 경우 어떻게해야하는지 알 수는 없습니다 ...함수에 의해 반환 된 PHP 배열의 요소 얻기

특정 요소를 빼고 싶습니다. 함수에 의해 반환되는 배열의 배열을 배열로 전달하지 않고 ...

$item = getSomeArray()[1]; 


function getSomeArray(){ 
    $ret = Array(); 
    $ret[0] = 0; 
    $ret[1] = 100; 
    return $ret; 
} 

올바른 구문은 무엇입니까?

+1

중복 가능성을 비 참조 7 어레이 : 4 어레이 간접 참조 첨가했다 여기 PHP의 배열 문서의 예이다 : //stackoverflow.com/questions/1459377/access-array-returned-by-a-function-in-php) – outis

+0

http://stackoverflow.com/a/35601314/2035600 – shan

답변

15

PHP는 이것을 수행 할 수 없습니다. 아직인데, 잘 알려진 제한 사항입니다. 너는 "너 농담 해?"하고 궁금해 할 권리가있다. 죄송합니다. 당신은 당신이 항상 각각 resetend와 배열의 처음과 마지막 요소를 꺼내 수있는 E_STRICT 경고를 생성 괜찮다면

-이 array_slice 이후 어떤 요소가 정렬 할 수 있습니다 당신은 또한 빼 수 있다는 것을 의미한다 첫 번째 또는 마지막으로 남기를 원하지만 그 일은 너무 오래 걸릴 것입니다.

하지만 절망적이지는 않습니다. (현재 다가오는) PHP 5.4 릴리스에는 정확하게이 기능이 포함될 것입니다 (이름은 array dereferencing).

업데이트 : 난 그냥 작동하는 다른 기술을 생각했습니다. 아마 내가 이것을 사용한 적이 없거나 사용 된 것을 본 적이있을만한 좋은 이유가있을 수 있지만 기술적으로는 그 일을합니다.

// To pull out Nth item of array: 
list($item) = array_slice(getSomeArray(), N - 1, 1); 
+0

와우 ... 얼마나 기괴한 ... ok ... 걱정하지 마라. 나는 temp 홀더 배열을 통과 할 것이다. 매우 감사합니다. –

2

예, PHP는이를 수행 할 수 없습니다. 박쥐 당신과 같이, ArrayObect를 사용할 수 있습니다

$item = getSomeArray()->{1}; 
// Credits for curly braces for Bracketworks  

function getSomeArray(){ 
    $ret = Array(); 
    $ret[0] = 0; 
    $ret[1] = 100; 
    return new ArrayObject($ret, ArrayObject::ARRAY_AS_PROPS); 
} 

좋아요는 어쩌면 숫자 키를 작동하지 않는,하지만 난 모르겠어요. 다른 사람으로

+2

그건 치명적인 겁니다; 당신은'getSomeArray() -> {1};을 할 필요가있다. 관련 정보에 대해서는 [SimpleXML] (http://www.php.net/manual/en/simplexml.examples-basic.php)의 기본 사용법을 참조하십시오. – Dan

0

내가 대개과 같이 변수에 할당,이 작업을 수행하는 직접적인 방법이 없습니다 말한다 :

$items = getSomeArray(); 
$item = $items[1]; 


function getSomeArray(){ 
    $ret = Array(); 
    $ret[0] = 0; 
    $ret[1] = 100; 
    return $ret; 
} 
0

나는 그 PHP에서 할 수 없습니다 꽤 확신합니다. 반환 된 배열을 다른 배열에 할당해야만 그 안에있는 요소에 액세스하거나 반환 된 배열 (var_dump (getSomeArray()))을 반복 할 다른 함수에서 직접 사용할 수 있습니다.

2

당신이 말하는 구문을 함수 배열 역 참조라고합니다. 아직 구현되지 않았으며 RFC for it이 있습니다.

일반적으로 허용되는 구문은 함수의 반환 값을 배열에 할당하고 $array[1] 구문을 사용하여 그 값에 액세스하는 것입니다.

그러나 사용자가 원하는 키를 함수에 전달할 수도 있습니다.

function getSomeArray($key = null) { 
    $array = array(
    0 => "cheddar", 
    1 => "wensleydale" 
); 

    return is_null($key) ? $array : isset($array[$key]) ? $array[$key] : false;  
} 

echo getSomeArray(0); // only key 0 
echo getSomeArray(); // entire array 
1

나는이 오래된 질문은 알고 있지만, 귀하의 예제에서, 당신은 또한 배열의 마지막 요소를 얻을 수 array_pop()을 사용할 수 있습니다 (또는 array_shift() 첫 번째를 얻을 수 있습니다).

<?php 
$item = array_pop(getSomeArray()); 


function getSomeArray(){ 
    $ret = Array(); 
    $ret[0] = 0; 
    $ret[1] = 100; 
    return $ret; 
} 
+0

고마워 ... 그게 내 의도가 아니 었어. 내가 찾고있는 것으로 오해 할 수있는 방법을 2 가지의 배열로 볼 수는있어. 필자는 함수가 직접 반환 한 배열 요소를 얻는 방법을 알아 내려고했습니다. 나는 PHP를 거대한 김이 나는 똥처럼 버렸고, 되돌아 보지도 않았다. 그래도 고마워! :) –

2

PHP 5.

예 번호 [PHP의 함수에 의해 리턴 통로 어레이 (HTTP의

function getArray() { 
    return ['a', 'b', 'c']; 
} 

// PHP 5.4 
$secondElement = getArray()[0]; // output = a 

// Previously 
$tmp = getArray(); 
$secondElement = $tmp[0]; // output = a 
관련 문제