2014-04-11 2 views
2

여기에 비슷한 질문이 많다는 것을 알고 있으며, 모두 읽었습니다. 내 문제는 내가 배열 목록을 통해 루프를 시도하고 각각에서 하나의 값을 잡아입니다. 배열은 제 3 자에 의해 설정되었으므로 수신 방법을 구성 할 수있는 권한이 없습니다. 여기에 내가 지금까지 가지고있는 것이있다 :배열 이름의 중괄호 변수, PHP

for ($i = 0; $i < $length; $i++) { 

    // Both of these work and return the value I need 
    echo $post->related_credits_0_related_show[0]; 
    echo "{$post->related_credits_0_related_show[0]}" 

    // But none of these do, and I need to loop through a handful of arrays 
    echo "{$post->related_credits_{$i}_related_show[0]}"; 
    echo "{$post->related_credits_${i}_related_show[0]}"; 
    echo "{$post->related_credits_{${i}}_related_show[0]}"; 
    echo "{$post->related_credits_".$i."_related_show[0]}"; 

} 

내가 포함하지 않을 조합을 많이 (많은!) 시도했다. 또한 $ i를 문자열로 변환하려고 시도했습니다. 잠깐 머리를 두드렸다.

도움을 주셔서 미리 감사드립니다.

+0

https://eval.in/135417 –

답변

2

이를 사용할 수 있습니다

$varname = "related_credits_$i_related_show"; 
$array = $post->$varname; 
echo $array[0]; 

더 짧은 형식은 다음과 같습니다

여기
$post->{"related_credits_{$i}_related_show"}[0]; 

당신을 찾을 모두에 대한 소위 "변수 변수"당신은 사용할 필요가 http://www.php.net/manual/en/language.variables.variable.php

+0

이렇게 많은 수정을 한 번했는데 $ i 주위에 중괄호를 넣어야했습니다. Stackoverflow는 내가 너무 빨라서 3 분 안에 대답을 받아 들일 것입니다! – user3523624

+0

예. 나는 또한 단축 된 대안을 추가했다. – hek2mgl

4

여기서 변수 변수. 다음과 같이 기본적인 사용법은 다음과 같습니다

$var = 'Hello there!'; 
$foo = 'var'; 
echo $$foo; 
    ^^--- note the double $-sign 

이 출력됩니다 :

echo ${"$foo"}; 

변수 이름이되면 더 복잡 :

Hello there! 

대신 $$foo, 당신은 또한 다음을 쓸 수 있습니다 할 수있는 일 :

echo ${"some_stuff_{$foo}_more_stuff"}; 

이 경우 변수 이름을 나타내는 문자열에 변수가 포함되어 있으며 해당 변수는 중괄호 ({})로 묶입니다. 상수, 배열 인덱스 등의 문제를 피하기 위해이 작업을 수행합니다. 그러나 유스 케이스에 포함되지 않은 경우에는 걱정할 필요가 없습니다.

for ($i=0; $i < $length; $i++) { 
    $res = $post->{'related_credits_'.$i.'_related_show'}[0]; 
} 

documentation on Variable Variables for more information를 참조하십시오 : 당신이 연결을 원하는 경우,

for ($i=0; $i < $length; $i++) { 
    $post->{"related_credits_{$i}_related_show"}[0]; 
} 

을 또는 : 특정 문제에 대한

, 당신은 다음을 사용할 수 있습니다.

+0

당신의 예제는 약간의 실수로 괜찮습니다. 즉, 평가는'$ i' 대신'$ i_related_show'에서 일어나고 오류는 정의되지 않은 변수'$ i_related_show'가있을 것입니다. 그러나 좋은 예를 들면 +1. –

+0

@ N.B .: 아 맞습니다. 나는 이것을 게시하기 전에 테스트하지 않았다. 지금 수정 :) –