关于数组的一些总结

定义

php中的数组是一个有序的映射,可以用来表示数组,列表(向量),哈希表,字典, 集合,堆栈,队列等

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
  • 每个item后需要接一个,号, 如果是单行数组的定义最后一个,号可以省略array(1,2)
  • 可以使用短数组语法[]来代替array()
<?php
$array = array(
	"foo" => "bar",
	"bar" => "foo",
);

$array = [
	"foo" => "bar",
	"bar" => "foo",
];

key和value

key可以是integer或者string, value可以是任意类型
key值被强制转化

  • string中包含有效的十进制int,除非数字前面有一个+号,否则会转化为int整形,如"8"会被转化成8
  • Float也会被转化成int, 小数部分会被舍去, 如 8.7会被转化成8
  • Bool也会被转化成int, 如true会被转化为1 false会被转化成为0
  • Null 会被转化成空字符串,如null 会转化为""
  • array和object不能被用于键名

如果定义的时候使用了相同的键名,之前会被覆盖

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

输出

array(1) {
  [1]=>
  string(1) "d"
}

访问数组单元

使用方括号语法访问 array[key]

注意 php8.0之前 还可以使用花括号来访问数组单元 array{key}

添加元素

  1. 可以使用array[]来添加新的元素,会取当前最大的Int索引值,新的键名将在该值 加上1
  $array = ['a','b'];
  $array[] = 'c';
  var_dump($array);

输出

array (size=3)
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)

如果没有int索引,则键名将为0

  $array1 = [
    'a' => '1',
    'b' => '2',
  ];
  $array1[] = 'c';
  var_dump($array1);

输出

array (size=3)
  'a' => string '1' (length=1)
  'b' => string '2' (length=1)
  0 => string 'c' (length=1)
  1. 使用array_push方法

如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
可以将一个或多个单元压入数组的未尾

array_push(array &$array, mixed $value1, mixed $... = ?): int

数组解包

使用 [](自 PHP 7.1.0 起)或者 list() 语言结构解包数组,把数组中的元素转化成不同的变量

<?php
$source_array = ['foo', 'bar', 'baz'];

[$foo, $bar, $baz] = $source_array;

echo $foo;    // 打印 "foo"
echo $bar;    // 打印 "bar"
echo $baz;    // 打印 "baz"
?>

可以使用foreach进行多维数组解包

<?php
$source_array = [
    [1, 'John'],
    [2, 'Jane'],
];

foreach ($source_array as [$id, $name]) {
    // 这里是 $id 和 $name 的逻辑
}
?>

修改,删除元素

遍历数组

要修改某个值,通过其键名给该单元赋一个新值。要删除某键值对,对其调用 unset() 函数。

<?php
$arr = array(5 => 1, 12 => 2);

$arr[] = 56;    // 这与 $arr[13] = 56 相同;
                // 在脚本的这一点上

$arr["x"] = 42; // 添加一个新元素
                // 键名使用 "x"
                
unset($arr[5]); // 从数组中删除元素

unset($arr);    // 删除整个数组
?>

关联数组和索引数组

关联数组在对应json的object, 索引数组对应array

关联数组

<?php 
$cars=array("a"=>"Volvo","b"=>"BMW","c"=>"SAAB");
var_dump($cars);
?>

索引数组

<?php 
$cars=array("Volvo","BMW","SAAB");
var_dump($cars);
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值