我对php中的关联数组(二维和三维)感到非常困惑
我正在学习php。尽管在谷歌上有这么多的例子,我仍然对实现二维和三维数组感到困惑。有人能用一个简单的例子解释一下吗?这些数组嵌套在其他数组中。根据嵌套的深度确定它们的尺寸 下面分别是一维和二维阵列的示例我对php中的关联数组(二维和三维)感到非常困惑,php,associative-array,Php,Associative Array,我正在学习php。尽管在谷歌上有这么多的例子,我仍然对实现二维和三维数组感到困惑。有人能用一个简单的例子解释一下吗?这些数组嵌套在其他数组中。根据嵌套的深度确定它们的尺寸 下面分别是一维和二维阵列的示例 $arr = array( 'item1' => 543, 654 => true, 'xas' => 0.54 ); // Accessing $arr[654] (returns true) $arr2 = array( array (
$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')
对于三维数组,只需在二维数组示例中的一个二级数组项中添加另一个嵌套数组。对于我来说,最简单的示例是将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
)
)
阵列可能如下所示:
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
)
)
该表被转换为一个数组数组。其中,每行由第一个索引访问,每列由第二个索引访问
因此,如果我想得到“Jane”,我会使用$array[1][1]
该表的关联数组可能如下所示:
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
)
)
您可以像$array[1][“Name”]一样访问“Jane”,数组中可以包含任何内容,从整数到字符串,到完整对象,再到另一个数组 任何数组本身都称为一维数组。如果你把它想象成一排盒子,那么它就是一行。如果一个数组中有另一个数组,那么它是一个二维数组:它的一个框将是一列,添加另一个维度
$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']='somethinother'代码>
$anArray['abc']
仅是该点的字符串变量。因此,您不能(或者可能不会,因为我还没有测试它,实际上一切都是可能的)再访问$anArray['abc'][1]['qwe']
因此,首先,试着把元素想象成变量;)
*/尽量避免从谷歌搜索中随机挑选PHP。你会发现你的知识库有点缺乏。相反,请查看以下PHP指南:。特别是关于数组的部分:@treeface:我同意。在谷歌上苦苦挣扎之后,我终于找到了那本书并开始探索,我开始喜欢PHP。到目前为止,这是我找到的最好的PHP书籍@user472625:坐下来读一本综合性的书,这会让你对基础知识以及如何使用它们有一个坚实的理解。而且它更有趣,因为你可以跟踪自己的进度。阅读一堆随机的网站会让你感到困惑,但是阅读一系列由同一位(有经验的)老师编写的章节意味着你对这些内容有了一致的理解,以后可以在此基础上继续学习。@Matt Ball:在PHP中,所有数组都是关联的。执行array(“foo”、“bar”、“baz”)
与array(0=>“foo”、1=>“bar”、2=>“baz”)
相同。在第一个示例中,PHP只是为您分配键。@Wilell:谢谢,我不知道-我不是一个真正的PHP人。您可能希望添加一个使用相同“表示例”的关联数组示例,以提供更多详细信息。回答非常好。这就是我要找的。