我正在学习php。尽管在谷歌上有很多例子,但我仍然对实现二维和三维数组感到困惑。请问有人能用简单的语言和示例来解释一下吗?
我正在学习php。尽管在谷歌上有很多例子,但我仍然对实现二维和三维数组感到困惑。请问有人能用简单的语言和示例来解释一下吗?
对我来说最简单的例子是将SQL表视为多维数组。
这个表可能看起来像这样:
ID | Name | Email
--------------------------
1 | John | john@email.com
2 | Jane | jane@email.com
数组可能长这样:
Array
(
[0] => Array
(
[0] => 1
[1] => John
[2] => john@email.com
)
[1] => Array
(
[0] => 2
[1] => Jane
[2] => jane@email.com
)
)
Array
(
[0] => Array
(
[ID] => 1
[Name] => John
[Email] => john@email.com
)
[1] => Array
(
[ID] => 2
[Name] => Jane
[Email] => jane@email.com
)
)
这些是嵌套在其他数组中的数组。它们嵌套的深度决定它们的维数。
下面分别是1D和2D数组的示例。
$arr =
array(
'item1' => 543,
654 => true,
'xas' => 0.54
);
// Accessing $arr[654] (returns true)
$arr2 = array(
array
(
'a' => 54,
'b' => 'Hello'
),
array
(
'itemx' => true,
954 => 'hello'
)
);
// Accessing $arr[0]['b'] (equal to 'Hello')
对于一个三维数组,只需在二维数组示例中的第二层级数组项中添加另一个嵌套数组即可。
数组可以包含任何东西,从整数到字符串,再到完整的对象,甚至是另一个数组。
任何单独的数组都被称为一维数组。如果你把它想象成一排盒子,那么它就是一行。如果一个数组里面有另一个数组,那么它就是一个二维数组:其中一个盒子将成为一列,增加了另一个维度。
$users = array() ;
$jim = array('Jim', 'Smith') ;
$users[] = $jim ;
//or in one step
$users = array(array('Jim', 'Smith')) ;
//then to access the first user:
$jim = $users[0];
//and his firstname:
$jimsname = $users[0][0] ;
//or
$jimsname = $jim[0] ;
您可以通过索引访问数组及其嵌套数组的元素,但需要记住哪个数字索引对应哪个信息片段。这就是您可以使用关联数组的地方,其中数字索引被唯一的描述性字符串替换:
$users = array() ;
$jim = array(
'firstname' => 'Jim',
'lastname' => 'Smith'
) ;
$users['jim'] = $jim ;
//then to access jim:
$jim = $users['jim'];
//and his firstname:
$jimsname = $users['jim']['firstname'] ;
//or
$jimsname = $jim['firstname'] ;
开始使用多维数组也有一个非常简单的方法。
只需拿一张纸和一支笔,先在纸上写下你的多维数组。这会在开始时对你有很大帮助。
它应该看起来像这样。
ARRAY0 {
key0.0 => "value0.0",
key0.1 => "value0.1",
key0.2 => ARRAY1 {
key1.0 => "value1.0",
key1.1 => ARRAY2 {
key2.0 => "value2.0",
key2.1 => "value2.1",
},
key1.2 => "value1.2",
},
key0.3 => "value0.3",
};
这只是我自己的数组可视化方式,如果你想的话,可以使用自己的语法。
试试这个简单方法。
$anArray['abc'][1]['qwe']='this is a value';
$anArray['abc']['avs']='another value';
echo $anArray['abc'][1]['qwe'];
echo $anArray['abc']['avs'];
/*
在 PHP 中,数组与其他语言有些不同。你可以将数组元素看作单个变量($anArray['abc'][1]['qwe'] 或 $anArray['abc']['avs']),并且可以像创建单个变量一样创建它们。这是传统数组的一个补充。传统方式也得到支持。
但是如果你写了这样的代码:$anArray['abc']='something else';
$anArray['abc']
从那时起只是一个字符串变量。因此,你不能(或者可能不行,因为我还没有测试过,实际上几乎所有事情都是可能的)再访问 $anArray['abc'][1]['qwe']
。
所以首先尝试将元素视为变量;)
*/
array("foo", "bar", "baz")
和array(0 => "foo", 1 => "bar", 2 => "baz")
是一样的。在第一个例子中,PHP会自动为你分配键。 - William Linton