【php快速上手(八)】

14 篇文章 0 订阅

PHP快速上手(八)

PHP 数组

在 PHP 中,数组是一种数据结构,可以存储多个类型的值,包括标量值(如整数、浮点数、字符串等)和复杂值(如对象、其他数组等)。数组可以是索引数组或关联数组,也可以是多维数组。下面详细介绍 PHP 中数组的定义、使用和操作。

1. 数组的定义

在 PHP 中,你可以使用 array() 函数或方括号 [] 语法定义一个数组。

  • 索引数组
    索引数组是通过整数索引访问元素的数组。索引通常从 0 开始。
    示例
    // 使用 array() 函数定义
    $fruits = array("apple", "banana", "cherry");
    
    // 使用方括号语法定义
    $numbers = [1, 2, 3, 4, 5];
    
    echo $fruits[0]; // 输出 "apple"
    echo $numbers[2]; // 输出 3
    
  • 关联数组
    关联数组是通过键值对访问元素的数组。键可以是字符串或整数。
    示例
    // 使用 array() 函数定义
    $person = array("name" => "Alice", "age" => 30);
    
    // 使用方括号语法定义
    $car = [
        "make" => "Toyota",
        "model" => "Corolla",
        "year" => 2020
    ];
    
    echo $person["name"]; // 输出 "Alice"
    echo $car["make"]; // 输出 "Toyota"
    

2. 数组的操作

PHP 提供了许多函数和方法来操作数组,包括添加、删除、合并、排序、搜索等。

  • 添加元素
    你可以通过索引或键直接向数组添加元素。
    示例
    $fruits = ["apple", "banana"];
    $fruits[] = "cherry"; // 添加到数组末尾
    $fruits[2] = "orange"; // 指定索引添加元素
    
    $person = ["name" => "Alice"];
    $person["age"] = 30; // 添加键值对
    
  • 删除元素
    你可以使用 unset() 函数删除数组中的元素。
    示例
    $fruits = ["apple", "banana", "cherry"];
    unset($fruits[1]); // 删除索引 1 的元素("banana")
    
    $person = ["name" => "Alice", "age" => 30];
    unset($person["age"]); // 删除键 "age" 的元素
    
  • 合并数组
    你可以使用 array_merge() 函数合并两个或多个数组。
    示例
    $array1 = ["a" => 1, "b" => 2];
    $array2 = ["b" => 3, "c" => 4];
    
    $mergedArray = array_merge($array1, $array2);
    print_r($mergedArray);
    
  • 搜索数组
    你可以使用 in_array() 函数搜索数组中的值,以及 array_search() 函数搜索数组中的键。
    示例
    $fruits = ["apple", "banana", "cherry"];
    $found = in_array("banana", $fruits); // 检查 "banana" 是否在数组中
    $index = array_search("banana", $fruits); // 查找 "banana" 在数组中的索引
    
    echo $found ? "Found" : "Not found"; // 输出 "Found"
    echo "Index: " . $index; // 输出 "Index: 1"
    

3. 多维数组

多维数组是数组中的元素是其他数组。你可以通过嵌套数组来表示复杂的数据结构。

示例

$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

echo $matrix[0][1]; // 输出 2

$users = [
    ["name" => "Alice", "age" => 30],
    ["name" => "Bob", "age" => 25]
];

echo $users[1]["name"]; // 输出 "Bob"

4. 数组遍历

你可以使用 foreach 循环遍历数组。

示例

$fruits = ["apple", "banana", "cherry"];

foreach ($fruits as $index => $fruit) {
    echo "Index $index: $fruit\n";
}

$person = ["name" => "Alice", "age" => 30];

foreach ($person as $key => $value) {
    echo "$key: $value\n";
}

这些是 PHP 中数组的基本概念和操作。数组是 PHP 中非常重要的数据结构,可以存储和组织各种类型的数据。

PHP数组排序

在 PHP 中,你可以使用多种方法对数组进行排序,包括按键排序、按值排序、保持键值关系排序、自然排序等。PHP 提供了一系列函数来完成不同类型的排序操作。下面详细介绍 PHP 中数组排序的不同方法及其用法:

1. 排序索引数组

索引数组可以使用 sort() 和 rsort() 函数按值排序。

  • sort()
    sort() 函数按升序对数组的值进行排序,并保持原始索引的顺序。
    示例
    $fruits = ["banana", "apple", "cherry"];
    sort($fruits);
    print_r($fruits);
    // 输出: Array ( [0] => apple [1] => banana [2] => cherry )
    
  • rsort()
    rsort() 函数按降序对数组的值进行排序。
    示例
    $numbers = [3, 1, 4, 2, 5];
    rsort($numbers);
    print_r($numbers);
    // 输出: Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )
    

2. 排序关联数组

关联数组可以使用 asort() 和 arsort() 函数按值排序,使用 ksort() 和 krsort() 函数按键排序。

  • asort()
    asort() 函数按升序对数组的值进行排序,并保持键值关系。
    示例
    $person = ["name" => "Alice", "age" => 30, "city" => "New York"];
    asort($person);
    print_r($person);
    // 输出: Array ( [city] => New York [name] => Alice [age] => 30 )
    
  • arsort()
    arsort() 函数按降序对数组的值进行排序,并保持键值关系。
    示例
    $grades = ["Alice" => 85, "Bob" => 92, "Carol" => 78];
    arsort($grades);
    print_r($grades);
    // 输出: Array ( [Bob] => 92 [Alice] => 85 [Carol] => 78 )
    
  • ksort()
    ksort() 函数按升序对数组的键进行排序,并保持值的顺序。
    示例
    $person = ["name" => "Alice", "age" => 30, "city" => "New York"];
    ksort($person);
    print_r($person);
    // 输出: Array ( [age] => 30 [city] => New York [name] => Alice )
    
  • krsort()
    krsort() 函数按降序对数组的键进行排序,并保持值的顺序。
    示例
    $grades = ["Alice" => 85, "Bob" => 92, "Carol" => 78];
    krsort($grades);
    print_r($grades);
    // 输出: Array ( [Carol] => 78 [Bob] => 92 [Alice] => 85 )
    

3. 自然排序

自然排序是按字符串的自然顺序排序,PHP 提供了 natsort() 和 natcasesort() 函数来实现。

  • natsort()
    natsort() 函数按自然顺序对数组的值排序。
    示例
    $files = ["file10.txt", "file2.txt", "file1.txt"];
    natsort($files);
    print_r($files);
    // 输出: Array ( [2] => file1.txt [1] => file2.txt [0] => file10.txt )
    
  • natcasesort()
    natcasesort() 函数是 natsort() 的不区分大小写版本。
    示例
    $names = ["Alice", "bob", "Carol"];
    natcasesort($names);
    print_r($names);
    // 输出: Array ( [0] => Alice [2] => Carol [1] => bob )
    

4. 自定义排序

你可以使用 usort()、uasort() 和 uksort() 函数自定义数组的排序方式。这些函数需要一个回调函数来定义排序规则。

  • usort()
    usort() 函数使用回调函数按自定义规则排序数组的值。
    示例
    $numbers = [3, 1, 4, 2, 5];
    usort($numbers, function($a, $b) {
        return $a - $b; // 升序排序
    });
    print_r($numbers);
    // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
    
  • uasort()
    uasort() 函数使用回调函数按自定义规则排序数组的值,并保持键值关系。
    示例
    $people = ["Alice" => 30, "Bob" => 25, "Carol" => 35];
    uasort($people, function($a, $b) {
        return $b - $a; // 降序排序
    });
    print_r($people);
    // 输出: Array ( [Carol] => 35 [Alice] => 30 [Bob] => 25 )
    
  • uksort()
    uksort() 函数使用回调函数按自定义规则排序数组的键。
    示例
    $people = ["Alice" => 30, "Bob" => 25, "Carol" => 35];
    uksort($people, function($a, $b) {
        return strcmp($a, $b); // 按键升序排序
    });
    print_r($people);
    // 输出: Array ( [Alice] => 30 [Bob] => 25 [Carol] => 35 )
    
  • 44
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值