3

PHP 零基础入门笔记(12):数组 array

 2 years ago
source link: https://blog.51cto.com/u_13567403/5241406
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

PHP 零基础入门笔记(12):数组 array

原创

彭世瑜psy 2022-04-22 09:46:22 ©著作权

文章标签 数组 php 字符串 文章分类 Java 编程语言 阅读数179

数组 array

数组的概念

数据的组合,将一组数据存储到一个指定的容器中,用变量指向该容器。
可以通过变量一次性得到该容器中的所有数据

数组的定义

// 1、使用array关键字
$变量 = array(元素1, 元素2, ...);

// 2、使用中括号
$变量 = [元素1, 元素2, ...];

// 3、隐形定义数组
$变量[] = 值1; // 默认下标是数字,默认从0开始
$变量[下标] = 值; // 下标或者key,可以是数字或字符串
// 下标自动为前面最大+1
// 方式一:
$arr = array('Tom', 'Jack', 'Steve');

// 方式二:
$arr = ['Tom', 'Jack', 'Steve'];

// 方式三:
$arr[] = 'Tom';
$arr[] = 'Jack';
$arr[] = 'Steve';

// 输出结果一样
var_dump($arr);
// array(3) {
//   [0]=> string(3) "Tom"
//   [1]=> string(4) "Jack"
//   [2]=> string(5) "Steve"
// }


PHP 数组特点

1、可以整数下标或者字符串下标

  • 索引数组:数组下标为整数
  • 关联数组:数组下标为字符串
  • 混合数组:不同下标可以混合存在

2、数组元素的顺序以放入顺序为准,跟下标无关

3、数字下标的自增长特性

4、特殊值下标的自动转换

<?php

$arr[false] = 'Tom';
$arr[true] = 'Jack';
$arr[null] = 'Steve';

var_dump($arr);
// array(3) {
//   [0] => string(3) "Tom"
//   [1] => string(4) "Jack"
//   [""]=> string(5) "Steve"
// }

5、PHP 数组元素没有类型限制

6、PHP 数组元素没有长度限制

多维数组:数组里的元素又是数组

1、二维数组: 数组中的所有元素都是一维数组

<?php

$arr = [
    [
        'name'=> 'Tom',
        'age'=> 23
    ],
    [
        'name'=> 'Jack',
        'age'=> 24
    ],

];

var_dump($arr);


// array(2) {
//   [0]=> array(2) {
//     ["name"] => string(3) "Tom"
//     ["age"]  =>  int(23)
//   }
//   [1]=> array(2) {
//     ["name"] => string(4) "Jack"
//     ["age"]  => int(24)
//   }
// }

2、多维数组:二维数组中的元素可以继续是数组

不建议超过三维以上的数组

3、异型数组(不规则数组)

数组的中的元素不规则,有普通基本变量也有数组

普通数组可以通过下标来访问

<?php

$arr = [
    [
        'name'=> 'Tom',
        'age' => 23
    ],
    [
        'name'=> 'Jack',
        'age' => 24
    ],
];

// 访问一维
var_dump($arr[0]);
// array(2) {
//   ["name"] => string(3) "Tom"
//   ["age"]  => int(23)
// }

// 访问二维
var_dump($arr[0]['name']);
// string(3) "Tom"

1、Foreach 语法

foreach($数组 as [$key =>] $value){
    // key下标 value值
}
<?php

$arr = [
    [
        'name'=> 'Tom',
        'age' => 23
    ],
    [
        'name'=> 'Jack',
        'age' => 24
    ],
];

foreach($arr as $index => $item){
    echo $index, $item['name'], $item['age'] . PHP_EOL;
}
// 0Tom23
// 1Jack24

2、foreach 遍历原理

本质是数组内部有一个指针,默认指向数组元素的第一个元素
foreach 就是利用指针取获取数据,同时移动指针

  1. foreach 会重置指针,让指针指向第一个元素
  2. 进入 foreach 循环,通过指针获取元素
  3. 进入循环体执行
  4. 重复此过程,直到取不到元素

3、for 循环遍历数组

获取数组长度 count()
要求数组元素下标有规律

<?php

$arr = ['Tom', 'Jack', 'Steve'];

for($i =0, $len =count($arr); $i < $len; $i ++){
    echo '[' . $i . '] ' . $arr[$i] . PHP_EOL;
}
// [0] Tom
// [1] Jack
// [2] Steve

4、while 循环

<?php

$arr = ['Tom', 'Jack', 'Steve'];

$i =0;
$len =count($arr);
while($i < $len){
    echo '[' . $i . '] ' . $arr[$i] . PHP_EOL;
    $i ++;
}
// [0] Tom
// [1] Jack
// [2] Steve

4、each (7 版本以后已弃用)


$arr = ['Tom', 'Jack', 'Steve'];


// 通过each移动数组指针下移
while($item = each($arr)){
    var_dump($item);
}
// array(4) {
//     [0]        =>  int(0)
//     [1]        =>  string(3) "Tom"
//     ["key"]    =>  int(0)
//     ["value"]  =>  string(3) "Tom"
//   }

5、list 按照下标取值

<?php

$arr = ['Tom', 'Jack', 'Steve'];

list($name1, $name2) = $arr;
var_dump($name1, $name2);
// string(3) "Tom"
// string(4) "Jack"

6、while + each + list 配合

<?php
$arr = ['Tom', 'Jack', 'Steve'];


// 通过each移动数组指针下移
while(list($key, $value) = each($arr)){
    echo '[' . $key . '] ' . $value . PHP_EOL;
}
// [0] Tom
// [1] Jack
// [2] Steve
  • 打赏
  • 1
  • 收藏
  • 评论
  • 分享
  • 举报

Recommend

  • 47
    • studygolang.com 5 years ago
    • Cache

    09Go语言——数组array

    Go语言——数组array [TOC] 小结: 数组⻓度必须是常量,且是类型的组成部分。 [2]int 和 [3]int 是不同类型。 ⽀持 "=="、 "!=" 操作符,因为内存总是被初始化过的。 指针数...

  • 4

    一文横扫数组基础知识旋转数组分为左旋转和右旋转两类,力扣 189 题为右旋转的情况,今日分享的为左旋转。给定一个数组,将数组中的元素向左旋转 k 个位置,其中 ...

  • 8
    • www.cxyxiaowu.com 3 years ago
    • Cache

    旋转数组(Rotate Array)

    旋转数组分为左旋转和右旋转两类,力扣 189 题为右旋转的情况,今日分享的为左旋转。 给定一个数组,将数组中的元素向左旋转 k 个位置,其中 k 是非负数。

  • 5

    这学期学习数据结构,其中一个概念想了很久,就是影子数组的问题。 Shadow Array 影子数组主要的作用是帮助实现在扩增的时候,实现快速的迭代。因为比较难以用语言形容,这里我直接用纸币来解释问题了。 影子数组其实就是就是在每...

  • 4

    js array数组拼接 push() concat() 的方法效率对比在做词条处理工具的时候,遇到了这个问题,在使用 concat() 拼接数组的时候要比 push() 拼接耗时多9倍let words = [] let needToBeAddedArray = [] // 需要拼接到...

  • 6

    你是否想过在js中如何对数组正确地进行分组?让我猜猜,你是否对结果不太满意?数组分组是一种很常见的操作,并有很多种实现方法,但是直到现在也没有原生方法并且所有实现的方法都有些...冗长难懂?我们将会探讨如何进行分组并简化这一切。

  • 4
    • www.bobobk.com 2 years ago
    • Cache

    python原生list数组与numpy的array

    python原生list数组与numpy的array 2021年12月22日 | 技术 在python中存储集合数据可以选择多种原生数据类型,包括list,array,tuple,dictionary四种类型....

  • 3

    PHP 零基础入门笔记(11):字符串 String 原创 彭世瑜psy 2022-04-21 10:01:30...

  • 5
    • senitco.github.io 2 years ago
    • Cache

    数组(Array)和动态规划

    数据结构与算法中数组(Array)问题总结归纳。 Unique PathsDescription: A robot is located at the top-left corner of a m x n grid...

  • 3
    • senitco.github.io 2 years ago
    • Cache

    数组(Array)和排序

    数组(Array)和排序 数...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK