2015-09-06 55 views
2

我試圖找到在PHP的結構,將做好這項工作:PHP stucture結構[陣列()]

$a = array(1,2); 
$b = array(3,4); 
$c = array(); 
$c[$a] = 100; 
$c[$b] = 200; 

$i = $c[$a] + $c[$b]; 
echo $i; 

正如你可以看到我用數組,但這似乎並沒有被正確的,因爲我得到這樣的:

警告:非法偏移類型在C:\ XAMPP \ htdocs中.......上線.....

什麼是正確的結構,我應該使用。這個工作可以用數組完成嗎?提前致謝!

+1

你正在嘗試使用一個數組作爲鍵。密鑰只能是數字或字符串。你現在做的是:'$ c [array(1,2)] = 100;解決方案:取決於你想做什麼。猜測是,只需將'$ c [$ a]和$ c [$ b]'更改爲'$ c [] = 100; $ c [] = 200; $ i = $ c [0] + $ c [1];' – Rizier123

+0

@ Rizier123我想用一個數組作爲鍵。這個數組有經度和緯度。我想使用座標作爲關鍵。如果這不能用數組完成,我可以使用另一種結構嗎? –

+2

您可以將數組「implode()」爲一個字符串,例如'$ coor1 = [1,2]; $ coor2 = [2,3];'然後像這樣使用它們:'$ c = []; $ c [implode(「|」,$ coor1)] = 100; $ c [implode(「|」,$ coor2)] = 200;'有了這個,你有這樣的鍵:'1 | 2'或'3 | 4'。並且像這樣訪問它們:''$ i = $ c [implode(「|」,$ coor1)] + $ c [implode(「|」,$ coor2)];' – Rizier123

回答

0

在PHP中,數組鍵只能是整數或字符串。你可以用多維數組來實現你想要的功能

$a = array(1,2); 
$b = array(3,4); 
$c = array(); 
$c[$a[0]][$a[1]] = 100; 
$c[$b[0]][$b[1]] = 200; 

$i = $c[$a[0]][$a[1]] + $c[$b[0]][$b[1]]; 
echo $i; 
+0

我不認爲這是一個好主意。我想要一把鑰匙。如果我使用這個,我會有一個二維數組。 –

+0

在這種情況下,您應該使用@Rizier123建議的implode()並將其包裝到一個函數中。 – Rythie