Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我对php中的关联数组(二维和三维)感到非常困惑_Php_Associative Array - Fatal编程技术网

我对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 (

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

这些数组嵌套在其他数组中。根据嵌套的深度确定它们的尺寸

下面分别是一维和二维阵列的示例

$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人。您可能希望添加一个使用相同“表示例”的关联数组示例,以提供更多详细信息。回答非常好。这就是我要找的。