2015-09-06 57 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