PHP 入门 - 5.数组

索引数组和关联数组

  • 索引(indexed):键名是整数并且从 0 开始。

  • 关联(associative):键名是字符串。

注:PHP 内部将所有的数组都存储为关联数组。

在数组末尾添加值

向一个已存在的索引数组末尾添加更多的值,可以使用 [] 语法。

$family = array("Fred","Wilma");
$family[] = "Pebbles"; // $family[2] 是 "Pebbles"

如果该数组为关联数组,则添加的索引为 0 。

$family = array('name' => "Wilma");
$family[] = "Pebbles"; // $family[0] 是 "Pebbles"

遍历数组

// 样例数组
$arr = array('name' => "Fred",'age' => 35,'wife' => "Wilma");
$arr1 = array("Fred", 35, "Wilma");

foreach

foreach ($arr as $val) {
  echo "{$val}\n";
}
/* output
Fred
35
Wilma  */
foreach ($arr as $key => $value) {
  echo "Fred's {$key} is {$value}\n";
}
/* output
Fred's name is Fred
Fred's age is 35
Fred's wife is Wilma  */

迭代器

每个 PHP 数组都会跟踪当前所处理的元素,指向当前元素的指针被称为迭代器。迭代器的函数如下:

  • current(&array):mixed : 返回迭代器当前指向的元素
  • reset(&array):mixed : 移动迭代器到数组中第一个元素
  • next(&array):mixed : 移动迭代器到数组下一个元素
  • prev(&array):mixed : 移动迭代器到数组上一个元素
  • end(&array):mixed : 移动迭代器到数组中最后一个元素
  • each(&array):array : 以数组的形式返回当前元素的键和值,并移动迭代器到下一个元素。
  • key(&array):mixed : 返回当前元素的键
while (list($key, $value) = each($arr)) {
  echo "Fred's {$key} is {$value}\n";
} // 会弹出警告
/* output
Fred's name is Fred
Fred's age is 35
Fred's wife is Wilma  */

for

$arr1count = count($arr1);

for ($i = 0; $i < $arr1count; $i++) {
  $value = $arr1[$i];
  echo "{$value}\n";
}
/* output
Fred
35
Wilma  */

排序

效果升序降序用户自定义函数
按值排序数组,然后从 0 开始重新分配索引sort()rsort()usort(&array, callback)
按值排序asort()arsort()uasort(&array, callback)
按键排序ksort()krsort()uksort(&array, callback)
  • natsort(&array):bool : 按照自然顺序,升序排序。
  • natcasesort(&array):bool : 不区分大小写,按照自然顺序,升序排序。
  • array_multisort() : 对多个索引数组进行排序。

数组函数

  • array(…):array : 创建一个数组。
  • count(array)sizeof(array) 获取数组中元素的个数。
  • list(varl[, …]):array : 不是真正的函数,而是一个语言结构。它会把数组中的值赋给一组变量。
  • array_slice(array, offset, length=NULL):array : 根据 offsetlength 参数返回 array 数组中的一段序列。
  • array_chunk(array, size[, preserve_keys = false]):array : 将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。第三个参数 preserve_keys 设置为 true 可以保留数组中原来的键名,默认从零开始新数字索引。
  • array_keys(array[, search_value=null[, strict=false]]):array : 返回 array 数组中的键名。如果指定 search_value ,则只返回该值的键名,否则将返回全部键名。strict 则是指定搜索时是否使用严格模式( === )。
  • array_values(array):array : 返回 array 数组中值的数组。
  • array_key_exists(key,array):bool : 检查数组里是否有指定的 key 。如果该键的值为 NULL ,该函数将返回 true
  • isset(var[, ...]):bool : 检查变量是否存在,并且不为 NULL
  • array_splice(array1, offset[, length=count(array1)[, replacement=array()]]):array : 把 array1 数组中由 offsetlength 指定的元素去掉,如果提供了 replacement 参数,则用其中的元素取代。
  • extract(&array[, flags=EXIR_OVERWRITE[, prefix=NULL]]):int : 将变量从数组中导入到当前的符号表中。
  • compact(varname1[, ...]):array : 创建一个包含变量名与其值的数组。该函数会创建一个关联数组。
  • array_walk(&array, callback, $userdata=NULL):bool : 为数组中的每个元素调用用户自定义的函数。自定义函数接受三个参数:第一个是元素的值,第二个是元素的键,第三个是 array_walk() 的第三个参数。
  • array_reduce() : 与 array_walk() 参数相同,不同的是,他将依次迭代数组每个元素得到单个值。
  • in_array(needle, haystack[, strict=false]):bool : 在 haystack 中搜索 needle 是否存在,strict 将设置是否严格匹配。
  • array_fliter(array, callback[, flag=0]):array : 使用 callback 函数来过滤 array
  • array_push(&array, value1[, ...]):intarray_pop(&array):mixed 模拟堆栈。
  • array_shift(&array, value1[, ...]):intarray_unshift(&array):mixed 模拟队列。
  • array_flip(array):array : 数组的键值互换。

感谢你看到了这里。如果文章有错误,请评论指正,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值