PHP使用什么类型的数组?

时间:2016-05-31 10:40:14

标签: php arrays

我可以在PHP中定义array,如下所示:

$array = array();

在C ++中,我们有两种数组。

  1. 第一种是固定大小的数组,例如:

    int arr[4]; // 4 ints, hardcoded size
    
  2. 第二种是动态大小的数组

    std::vector<int> v; // can grow and shrink at runtime
    
  3. PHP使用什么类型的数组? PHP中是两种数组吗?如果是的话,你能举例说明吗?

6 个答案:

答案 0 :(得分:15)

PHP没有C或C ++那么严格。在PHP中,您不需要指定要放入数组中的数据类型,也不需要指定数组大小。

如果需要在C ++中声明一个整数数组,可以这样做:

int array[6];

此数组现在只能包含整数。在PHP中,数组可以包含几乎所有内容:

$arr = array();
$arr[] = 1;
$arr[] = 2;
$arr[] = 3;
$arr[] = 4;
var_dump($arr);   //Prints [1,2,3,4]
$arr[] = 'hello world';   //Adding a string. Completely valid code
$arr[] = 3.14;   //Adding a float. This one is valid too
$arr[] = array(
           'id' => 128,
           'firstName' => 'John'
           'lastName' => 'Doe'
);  //Adding an associative array, also valid code
var_dump($arr);  //prints [1,2,3,4,'hello world',3.14, [ id => 128, firstName => 'John', lastName => 'Doe']]

如果您来自C ++背景,最好将PHP数组视为可以存储所有内容的通用矢量。

答案 1 :(得分:12)

来自php.net

  

PHP中的数组实际上是一个有序的映射。地图是一种类型   将值与键相关联。此类型针对多种进行了优化   不同用途;它可以被视为数组,列表(向量),哈希   table(地图的实现),字典,集合,堆栈,   队列,可能更多。由于数组值可以是其他数组,树   和多维数组也是可能的。

答案 2 :(得分:2)

PHP使用三种数组:

数字数组 - 具有数字索引的数组。值以线性方式存储和访问。

关联数组 - 以字符串作为索引的数组。这将元素值与键值相关联,而不是以严格的线性索引顺序存储。

多维数组 - 使用多个索引访问包含一个或多个数组和值的数组。

Numeric Array Ex:

 $numbers = array( 1, 2, 3, 4, 5);

关联阵列Ex:

$salaries = array("mohammad" => 2000, "qadir" => 1000, "zara" => 500);

多维数组Ex:

$marks = array( 
            "mohammad" => array (
               "physics" => 35,
               "maths" => 30,   
               "chemistry" => 39
            ),

            "qadir" => array (
               "physics" => 30,
               "maths" => 32,
               "chemistry" => 29
            ),

            "zara" => array (
               "physics" => 31,
               "maths" => 22,
               "chemistry" => 39
            )
         );

答案 3 :(得分:2)

用C ++术语表示的php数组大致是:

std::map< std::experimental::any, std::experimental::any >

其中std::experimental::any是一种基本上可以容纳任何东西的类型。 php等价物也可以使用等效的<进行排序。

唔不完全 - 更接近事实是,php数组是一个抽象接口,它暴露了上述map在C ++中提供的大部分操作(C ++ map是具体的实现)。

存储在Variant中的具有连续数字键的数组被视为std::vector<Variant>,并且在界面下php系统甚至可以使用vector<Variant>或类似的东西来存储它,甚至有两个不同的内部细节,其中一个用于连续的整数索引数据块,另一个用于稀疏条目。 (我不知道php是如何实现的,但我就是这样做的)

答案 4 :(得分:1)

PHP中基本上有三种使用模式

索引数组:具有连续数字索引的数组,例如0,1,2等。示例:

$myarray = array();
$myarray[0] = "test data 1";
$myarray[1] = "test data 2";
$myarray[3] = "test data 3";

关联数组:这是最常用的PHP数组类型,其元素在键/值对中定义。例如:

$myarray = array();
$myarray["key1"] = "value 1";
$myarray["key2"] = "value 2";
$myarray["key3"] = "value 3";

多维数组:其元素可能包含一个或多个数组的数组。尺寸水平没有限制。例如:

$myarray = array();
$myarray[0] = array("data01","data02","data03");
$myarray[1] = array("data11","data12","data13");

有关详细信息,请参阅 PHP 5 Arrays

答案 5 :(得分:0)

PHP使用数字,关联数组和多维数组。阵列本质上是动态的,不应提及任何大小。浏览php.net/manual/en/language.types.array.php以查找详细信息。