Array数组格式

PHP数组其实是一种关系映射,一种把valus关联到keys的模型。

数组的key会进行自动的强制类型转换,如下所示:

1、包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
2、浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8
3、布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0
4、Null 会被转换为空字符串,即键名 null 实际会被储存为 “”。
5、数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type

如下代码所示:

 "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);
?>

输出如下:

Array数组格式_第1张图片
Paste_Image.png

因为上面的键名都强制转成了 “1”,每个新单位都会覆盖前一个单元,最后剩下一个 d

key 为可选项。如果未指定,PHP 将自动使用之前用过的最大 integer键名加上 1 作为新的键名。

如下代码

 "c",
         "d",
);
var_dump($array);
?>

输出如下

Array数组格式_第2张图片
Paste_Image.png

d位于c的后面,则在原来最大的键名6 基础上加 1

重新生成索引
 $value) {
    unset($array[$i]);
}
print_r($array);

// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = 6;
print_r($array);

// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>

输出如下

Array数组格式_第3张图片
Paste_Image.png

使用 array_values 即可实现数组的重新索引

object转成array

对于任意 integer,float,string,boolean 和 resource 类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。换句话说,(array)$scalarValuearray($scalarValue) 完全一样。
如果一个 object 类型转换为 array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问;私有变量前会加上类名作前缀;保护变量前会加上一个 '*' 做前缀。这些前缀的前后都各有一个 NULL 字符。这会导致一些不可预知的行为:

如下


将如下显示

Array数组格式_第4张图片
Paste_Image.png

将会如下显示

Array数组格式_第5张图片
Paste_Image.png

参考来源:php官方文档

你可能感兴趣的:(Array数组格式)