2016-01-28 261 views
1

我認爲這可能是一些簡單的問題。我發現了類似的問題,但它們並不能完全解決我的問題。我有兩個數組。PHP變量變量和數組索引

$ array_numerals

Array 
(
[2] => two 
[3] => three 
[4] => four 
[5] => five 
[6] => six 
[7] => seven 
) 

$ array_two

Array 
(
[0] => $100 
[1] => $200 
[2] => $300 
) 

如果我使用

echo $array_two[0]; 

它顯示了正確輸出,這是$100,符合市場預期。

我想要做的是使「兩個」和「[0]」動態。 「2」可以用「3」或「4」來代替,而「[0]」可以用「[1]」或「[2]」代替。

所以,如果我用

$i = 2; 
$j = 0; 

echo $array_{$array_numerals[$i]}[$j]; 

它不工作,並顯示空值。

編輯:謝謝大家的意見和答案。我必須補充說$ array_two,$ array_three等是由另一個源提供的固定變量,所以它不像我可以控制這些數組的初始構造。因此,你們中的一些人給出的答案將不會成爲現實(當然不是你的錯,也許我在開始時沒有足夠的闡述)。 Amadan和LuvnJesus給出的答案效果最好。

+0

請問您可以爲您的問題添加預期嗎? –

+1

你試圖做的事情是不可能的,你這樣做。相反,您需要使用鋸齒陣列,這是一個數組數組。 –

+0

@ amit-shah第二個代碼塊的期望輸出應該與第一個代碼塊相同,即「$ 100」。 – zzzplayer

回答

4
echo ${"array_$array_numerals[$i]"}[$j]; 

但是我必須提醒你,這樣做是一個非常糟糕的主意。 相反,使用另一個查找數組:

$array = Array(
    0 => Array(
    2 => "$100", 
    ... 
), 
    ... 
); 

echo $array[$i][$j]; 
+0

謝謝@amadan,你真了不起。 – zzzplayer

0

爲什麼不直接使用:

$array['two'][0] 
$array['three'][0] 
$array['four'][0] 
$array['four'][1] 
etc... 
0

可你只需要使用這樣的:

$array_two[0] = $array_two[1]; 

,做同樣的事情,與其他陣列。

0

首先,打造「名」的數組,並將其存儲在一個變量:

$arrayname = "array_".$array_numerals[$i]; 

存儲數組值到一個新的數組

$newarray = $$arrayname; 

現在輸出你希望哪個元素:

echo $newarray[$j]; 

總之你:

$arrayname = "array_".$array_numerals[$i]; 
$newarray = $$arrayname; 
echo $newarray[$j]; 
+0

我更喜歡Amadan的解決方案..但是這個工作。好問題。 – LuvnJesus

0

您可以使用PHP的compact功能。我已經使用你的數組並根據需要創建了結果。請check here