我在php中对关联数组(二维和三维)感到非常困惑。

3

我正在学习php。尽管在谷歌上有很多例子,但我仍然对实现二维和三维数组感到困惑。请问有人能用简单的语言和示例来解释一下吗?


3
尽量避免从Google搜索中随意获取PHP代码片段。你会发现自己的知识库有些欠缺。相反,查看此PHP指南:http://www.tuxradar.com/practicalphp。特别是关于数组的部分:http://www.tuxradar.com/practicalphp/5/0/0。 - treeface
1
@treeface: 我同意。在谷歌上搜索了好久,我终于找到了那本书并开始探索,我开始喜欢 PHP 了。这是我迄今为止发现的最好的 PHP 书籍。@user472625:静下心来,仔细阅读一本全面的书籍可以让你对基础知识和如何使用它们有一个扎实的理解。而且因为你可以跟踪自己的进度,所以更加有趣。阅读一堆随机的网站只会让你感到困惑,但是通过先后阅读同一个(经验丰富的)老师编写的连续章节,你将建立起一致的理解,以后可以在此基础之上不断深入学习。 - William Linton
@Matt Ball:在PHP中,所有的数组都是关联数组。使用array("foo", "bar", "baz")array(0 => "foo", 1 => "bar", 2 => "baz")是一样的。在第一个例子中,PHP会自动为你分配键。 - William Linton
@willell:谢谢,我不知道,我并不是一个PHP专家。 - Matt Ball
5个回答

7

对我来说最简单的例子是将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
        )

)

表格被转化为一个数组的数组,其中每一行可以通过第一个索引访问,每一列可以通过第二个索引访问。因此,如果我想要获取"Jane",我会使用$array[1][1]。
同样的表格如果用关联数组表示,可能会像这样:
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"。

你可能想通过使用同一“表示例”来添加一个关联数组的示例,以便更详细地解释。 - dr Hannibal Lecter

3

这些是嵌套在其他数组中的数组。它们嵌套的深度决定它们的维数。

下面分别是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')

对于一个三维数组,只需在二维数组示例中的第二层级数组项中添加另一个嵌套数组即可。


1

数组可以包含任何东西,从整数到字符串,再到完整的对象,甚至是另一个数组。

任何单独的数组都被称为一维数组。如果你把它想象成一排盒子,那么它就是一行。如果一个数组里面有另一个数组,那么它就是一个二维数组:其中一个盒子将成为一列,增加了另一个维度。

$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'] ;

就是这样。你可以在这里手册中查看更多信息。


1

开始使用多维数组也有一个非常简单的方法。

只需拿一张纸和一支笔,先在纸上写下你的多维数组。这会在开始时对你有很大帮助。

它应该看起来像这样。

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",
};

这只是我自己的数组可视化方式,如果你想的话,可以使用自己的语法。


1

试试这个简单方法。

$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']

所以首先尝试将元素视为变量;)

*/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接