php 数组添加元素-关于PHP的数据类型(三)

5数组(数组):

PHP 中的字段实际上是一个有序映射。 映射是将值与键关联起来的类型。 这种类型在很多方面进行了优化php 数组添加元素,因此可以将其视为真正的字段,或者列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列以及更多可能性。形式参数的元素可以是另一个字段,也允许树结构和多维字段

示例1.php

//数组的声明:
$array1 = array('key' => 'value');
$array2 = ['name' => 'monkey']; //PHP5.4 以后可以使用 [],来声明数组;

注意:

如果链表定义中的多个单元使用相同的键名,则仅使用最后一个,并覆盖前面的;

示例2.php

//类型强制转换与覆盖
 "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);
/**
运行结果是:
array(1) {
  [1]=>
  string(1) "d"
}
**/
?>

PHP 数组可以包含丰富的整数和字符串键值,因为 PHP 实际上并不区分索引数组和关联的链表。

如果没有为给定值指定键,则获取当前最大的整数索引值,新键将是该值加一。 如果指定的key已经有值,则该值将被覆盖;

示例3.php

//混合 integer 和 string 的键名
$array = array(
    "foo" => "bar",
    "bar" => "foo",
    100   => -100,
    -100  => 100,
);
var_dump($array);
/**
以上会输出:
array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
**/

如果未指定,则 key 是可选的。 PHP会手动使用之前使用过的最大整数键+1作为新的键值;

示例4.php

//没有键名的索引数组

/** 以上会输出
array(4) {
  [0]=>
  string(3) "foo"
  [1]=>
  string(3) "bar"
  [2]=>
  string(5) "hallo"
  [3]=>
  string(5) "world"
}**/

只能为个别单位指定键值,其他的不指定键值;

示例5.php

 "c",
         "d",
);
var_dump($array);
/**
以上会输出:
array(4) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [6]=>
  string(1) "c"
  [7]=>
  string(1) "d"
}
**/

最后的值d是手动分配给键值7的,因为之前最大的整数键值是6;

示例6.php

 "bar",
    42    => 24,
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);
var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
/**
以上会输出:
string(3) "bar"
int(24)
string(3) "foo"
**/ 

注意:方括号[]和大括号{}可以互换使用来访问链表元素,(例如:上例中的$array[43]和$array{43}具有相同的效果);

$arr[key] = value;
$arr[] = value;
// key 可以是 integer 或 string
// value 可以是任意类型的值

如果 $arr 尚不存在,则会创建一个新的。

要更改值,请通过单元格的键为单元格分配新值。 要删除通配符对,请对其调用 unset() 函数;

这里就不详细阐述链表操作函数了,稍后会详细讲解;

示例7.php

 1, 12 => 2);
$arr[] = 56;    // 增加一个键名是 13 的单元  $arr[13] = 56;
$arr["x"] = 42; // 增加一个 键名是 "x" 的单元
unset($arr[5]); // 删除掉 $arr 数组中 键名是 5 的单元
unset($arr);    // 删除整个数组 $arr
?>

如果给出方括号但未指定键,则采用当前最大整数索引值,新键将是该值 + 1(但最小值为 0)。 如果还没有整数索引php 数组添加元素,则键名将为 0。

注意:这里使用的最大整数键值不一定在当前链表中。 只需要在前面的链表重新生成索引后才存在; (这有点令人困惑,请参阅示例);

示例8.php

 $value) {
    unset($array[$i]);
}
print_r($array);
// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = 6;
print_r($array);
// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);

结果:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Array
(
)
Array
(
    [5] => 6
)
Array
(
    [0] => 6
    [1] => 7
)

这个理论听起来可能很复杂,但很容易理解;

注意:强烈不建议这样写$arrp[bar],而是写成$arr['bar']; 注意链表中单元中使用“”或“”;

example9.php


/**
执行结果
array(3) {
  ["BA"]=>
  NULL
  ["AA"]=>
  NULL
  ["AA"]=>
  NULL
}
**/

6object对象:

创建object对象需要使用new语句实例化; (稍后详细说明类和对象);

转换为对象:

$obj = (object) array('1' => 'foo');
var_dump(isset($obj->{'1'})); //  bool(false)
var_dump(key($obj)); //  int(1)

对于其他值,包含成员变量名称:


  string(4) "ciao"
}
**/
echo $obj->scalar;  // 输出 'ciao'

7 空:

特殊的 NULL 值意味着没有任何变量。 NULL 类型唯一可能的值为 null;

在以下情况下变量被视为 NULL:

8.资源资源:

资源是一种特殊变量,它保存对外部资源的引用。 资源是通过专门的功能来构建和使用的。

后面我们会讲到资源的相关功能以及对应的资源类型;

转换为资源:

由于资源类型变量持有打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其他类型的值转换为资源是没有意义的。