PHP数组完整操作方法大全

2024-05-28 18:35:28 浏览数 (2)

创建数组

1.直接赋值

代码语言:javascript复制
$array = array('apple', 'banana', 'cherry');

2.使用array()函数

代码语言:javascript复制
$fruits = array('apple' => 'red', 'banana' => 'yellow', 'cherry' => 'red');

访问数组元素

1.通过键访问元素

代码语言:javascript复制
$fruits['apple'];

2.循环遍历数组中的元素:

代码语言:javascript复制
foreach ($fruits as $key => $value) { 
    /* 处理每个元素$key为键名 $value为键值 */ 
}

数组操作函数

1.获取数组元素数量

代码语言:javascript复制
$count = count($fruits); 

2.增加数组元素

代码语言:javascript复制
array_push($fruits, 'orange');

//方括号法
$fruits[] = 'orange';

//键值对方式添加关联数组元素
$colors['apple'] = 'red'; 

3.弹出数组末尾元素

代码语言:javascript复制
$lastFruit = array_pop($fruits);

4.移除数组开头的元素

代码语言:javascript复制
$firstFruit = array_shift($fruits);

5.在数组开头添加一个或多个元素

代码语言:javascript复制
array_unshift($fruits, 'pear');

6.合并两个数组

代码语言:javascript复制
$combinedArray = array_merge($fruits, $colors);

数组搜索筛选、过滤、转换

1.检查数组中是否存在某个值

代码语言:javascript复制
if (in_array('red', $colors)) {
    echo 'Red 存在于这个数组';
}

2.循环遍历数组获取其他元素

代码语言:javascript复制
$data = [
    [2, "北京市", 1],
    [24, "天津市", 2]
];

foreach ($data as $item) {
    if ($item[1] === "天津市") {
        $result = $item[2];
        break;
    }
}

echo $result;  // 输出 2

3.在数组中搜索给定的值,并返回对应的键。

代码语言:javascript复制
$fruits = array('apple', 'banana', 'cherry');
$key = array_search('banana', $fruits); 

echo $key // 输出1
  
//查找子数组返还下标
$data = [
    [2, "北京市", 1],
    [24, "天津市", 2]
];

$index = array_search(["", "天津市", ""], array_column($data, 1));
if ($index !== false) {
    $result = $data[$index][0];
}

echo $result;  // 输出 24

4.过滤数组中的元素,并返回满足指定条件的元素。

代码语言:javascript复制
// 示例关联数组
$data = array(
    array('id' => 1, 'name' => 'Alice', 'age' => 25),
    array('id' => 2, 'name' => 'Bob', 'age' => 30),
    array('id' => 3, 'name' => 'Charlie', 'age' => 28)
);

// 使用array_filter()函数选择年龄大于等于 28 的项
$filteredData = array_filter($data, function($item) {
    return $item['age'] >= 28;
});

echo json_encode($filteredData);

输出值如下:

代码语言:javascript复制
{
  "1": {
    "id": 2,
    "name": "Bob",
    "age": 30
  },
  "2": {
    "id": 3,
    "name": "Charlie",
    "age": 28
  }
}

5.对数组中的每个元素应用回调函数,并返回一个新数组,该数组包含回调函数的返回值。

代码语言:javascript复制
$numbers = array(1, 2, 3, 4, 5);
$squared = array_map(function($value) {
    return $value * $value;
}, $numbers); 
// $squared 的值为 [1, 4, 9, 16, 25]

//或以上述4中筛选后的数据为例,提取其中的姓名
$filteredNames = array_map(function ($item) {
  return $item['name'];
}, $filteredData);

echo json_encode($filteredNames);
//输出:{"1": "Bob", "2": "Charlie"}

6.提取数组中的键或值,并返回新数组

代码语言:javascript复制
$fruits = array('apple' => 'red', 'banana' => 'yellow', 'cherry' => 'red');

$keys = array_keys($fruits); 
// $keys 的值为 ['apple', 'banana', 'cherry']

$values = array_values($fruits); 
// $values 的值为 ['red', 'yellow', 'red']

7.将数组元素归约为单个值。通过使用回调函数逐个处理数组元素,最终将它们减少为单个值。

代码语言:javascript复制
$numbers = array(1, 2, 3, 4, 5);
$product = array_reduce($numbers, function($carry, $item) {
    return $carry * $item;
}, 1); 
// $product 的值为 120 (1*2*3*4*5)

数组排序

1.sort()rsort()

代码语言:javascript复制
// sort() 对数组进行升序排序
$numbers = array(4, 2, 8, 1, 5);
sort($numbers);
// $numbers 现在为 [1, 2, 4, 5, 8]

// rsort() 对数组进行降序排序
rsort($numbers);
// $numbers 现在为 [8, 5, 4, 2, 1]

2.asort()arsort()

代码语言:javascript复制
$colors = array('apple' => 'red', 'banana' => 'yellow', 'cherry' => 'red');
// asort() 按值对关联数组进行升序排序并保留键值关联
asort($colors);
// $colors 现在为 ['banana' => 'yellow', 'apple' => 'red', 'cherry' => 'red']

// arsort() 按值对关联数组进行降序排序并保留键值关联
arsort($colors);
// $colors 现在为 ['banana' => 'yellow', 'cherry' => 'red', 'apple' => 'red']

3.ksort()krsort()

代码语言:javascript复制
// 创建一个关联数组
$ages = array('Tom' => 30, 'Alice' => 25, 'Bob' => 35);

// ksort() 按键对关联数组进行升序排序并保持键值关联
ksort($ages);
// $ages 现在为 ['Alice' => 25, 'Bob' => 35, 'Tom' => 30]

// krsort() 按键对关联数组进行降序排序并保持键值关联
krsort($ages);
// $ages 现在为 ['Tom' => 30, 'Bob' => 35, 'Alice' => 25]

0 人点赞