Home  >  Article  >  Backend Development  >  How to delete elements of an array in a loop in php

How to delete elements of an array in a loop in php

PHPz
PHPzOriginal
2023-04-26 10:32:04983browse

In PHP, array is an important data structure. It can store multiple elements and perform addition, deletion, modification and query operations as needed. Sometimes we need to delete an element in the array. In this case, using a loop to delete is an effective method.

PHP provides a variety of loop structures, such as for loop, while loop, foreach loop, etc. Among them, the foreach loop is a special loop structure that can easily traverse each element in the array and perform corresponding operations.

When using a foreach loop to delete array elements, you must pay attention to some issues to avoid unexpected results. Below we will introduce some operating techniques related to deleting array elements in a loop.

1. Use the unset function to delete array elements

In PHP, we can use the unset function to delete the element with a specified subscript in the array. The usage of this function is as follows:

unset($array[$key]);

where $array is the name of the array and $key is the subscript of the element to be deleted. After this function is executed, the corresponding element in the array will be deleted.

2. Use foreach loop to delete array elements

Below we will introduce the steps of using foreach loop to delete array elements. Suppose we have an array named $users that stores information about multiple users, including name, age, gender, etc. Now we want to delete user records older than 30 years old. The specific steps are as follows:

  1. Use a foreach loop to traverse each element in the array.
  2. Check each element. If the age of the element is greater than 30 years old, use the unset function to delete the element.
  3. After completing the loop, user records older than 30 years old in the original array will be deleted.

The sample code is as follows:

//定义数组$users,保存用户信息
$users = array(
    array('name'=>'张三','age'=>28,'sex'=>'男'),
    array('name'=>'李四','age'=>35,'sex'=>'男'),
    array('name'=>'王五','age'=>42,'sex'=>'女'),
    array('name'=>'赵六','age'=>25,'sex'=>'女'),
    array('name'=>'孙七','age'=>38,'sex'=>'男')
);

//使用foreach循环删除年龄大于30岁的用户记录
foreach($users as $key=>$value){
    if($value['age']>30){
        unset($users[$key]);
    }
}

//输出删除后的数组
print_r($users);

The execution results are as follows:

Array
(
    [0] => Array
        (
            [name] => 张三
            [age] => 28
            [sex] => 男
        )

    [3] => Array
        (
            [name] => 赵六
            [age] => 25
            [sex] => 女
        )

)

We can see that after loop deletion, users older than 30 years old in the original array The records have been deleted, leaving only records for users aged 30 or younger.

3. Problems caused by deleting array elements

When using a loop to delete array elements, some problems may occur. Below we'll cover some issues to be aware of and how to resolve them.

  1. After deleting array elements, the array subscript may change.

When using a loop to delete array elements, you need to consider that the array subscript may change. If we use the unset function to delete elements directly in the foreach loop, the array subscripts will be discontinuous and some subscripts will be skipped.

In order to avoid this situation, we can first traverse the array, save the subscript of the element to be deleted in another array, and then use a loop to delete. The sample code is as follows:

//定义数组$users,保存用户信息
$users = array(
    array('name'=>'张三','age'=>28,'sex'=>'男'),
    array('name'=>'李四','age'=>35,'sex'=>'男'),
    array('name'=>'王五','age'=>42,'sex'=>'女'),
    array('name'=>'赵六','age'=>25,'sex'=>'女'),
    array('name'=>'孙七','age'=>38,'sex'=>'男')
);

//初始化要删除的元素下标数组
$keys = array();

//遍历一遍数组,将要删除的元素下标保存在另一个数组中
foreach($users as $key=>$value){
    if($value['age']>30){
        $keys[] = $key;
    }
}

//使用循环删除要删除的元素
foreach($keys as $key){
    unset($users[$key]);
}

//输出删除后的数组
print_r($users);

The execution result is the same as the previous example. We successfully deleted user records older than 30 years old and maintained the continuity of the array subscripts.

  1. After deleting the array elements, you need to reorder the array subscripts.

After using a loop to delete array elements, the subscripts may be discontinuous. In order to avoid this situation affecting the program, we need to reorder the array subscripts after deleting the elements.

To reset the array key names to consecutive numbers, you can use the array_values ​​function, which returns a new array containing all the values ​​in the array, reordered by consecutive numeric keys. The sample code is as follows:

//定义数组$users,保存用户信息
$users = array(
    array('name'=>'张三','age'=>28,'sex'=>'男'),
    array('name'=>'李四','age'=>35,'sex'=>'男'),
    array('name'=>'王五','age'=>42,'sex'=>'女'),
    array('name'=>'赵六','age'=>25,'sex'=>'女'),
    array('name'=>'孙七','age'=>38,'sex'=>'男')
);

//使用foreach循环删除年龄大于30岁的用户记录
foreach($users as $key=>$value){
    if($value['age']>30){
        unset($users[$key]);
    }
}

//重置数组下标为连续的数字
$users = array_values($users);

//输出删除后的数组
print_r($users);

The execution result is the same as the previous example. We successfully deleted user records older than 30 years old and reset the array subscripts to consecutive numbers.

To sum up, using a loop to delete array elements is a common operation method. We need to pay attention to the problems that may be caused when deleting elements and take corresponding solutions to ensure the correctness and stability of the program.

The above is the detailed content of How to delete elements of an array in a loop in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn