PHP - xóa phần tử khỏi mảng

PHP - xóa phần tử khỏi mảng

Ruby hỗ trợ phương thức delete dùng để xóa phần tử ra khỏi mảng:

a = [2,4,6,3,8]
a.delete(3)

PHP có hàm nào tương tự như vậy để xóa một phần tử ra khỏi mảng không vậy mọi người?

    Guest

    - 1970/01/01 Trả lời

    đơn giản bạn có thể sử dụng unset()
    Theo ví dụ của bạn:

    $a = array(2, 4, 6, 3 , 8);  // Mảng này tương đương với:
    
    $a = array(0 => 2,  1 => 4, 2 => 6, 3 => 3, 4 => 8); // nếu bạn không đặt key cho mỗi giá trị

    // Vậy muốn xóa giá trị nào ta chỉ cần gọi key của nó trong hàm unset. Ví dụ dưới đây tôi sẽ xóa giá trị 6 trong mảng của bạn.

    unset($a[2]);

    // Ví dụ về xóa nhiều giá trị, hoặc có điều kiện cụ thể. Chẳng hạn tôi sẽ xóa các giá trị chẵn trong mảng của bạn như sau:

    foreach($a as $key => $num)
    {
    if($num % 2 = 0)
    {
    unset($a[$key])
    }
    }

    Guest

    - 1970/01/01 Trả lời

    Bạn có thể dùng unset() hoặc array_split().

    $fruits = ['Apple', 'Banana', 'Mango', 'Kiwi', 'Orange'];
    unset($fruits[1]);
    print_r($fruits);
    
    // Array
    // (
    //     [0] => Apple
    //     [2] => Mango
    //     [3] => Kiwi
    //     [4] => Orange
    // )
    
    $fruits = ['Apple', 'Banana', 'Mango', 'Kiwi', 'Orange'];
    array_splice($fruits, 1, 1);
    print_r($fruits);
    
    // Array
    // (
    //     [0] => Apple
    //     [1] => Kiwi
    //     [2] => Orange
    // )
    

    Bạn tham khảo thêm trả lời của mình trong câu hỏi này nhé!

    Guest

    - 1970/01/01 Trả lời

    Trong PHP bạn có thể sử dụng hàm array_splice() để xóa phần tử khỏi mảng số (numeric array):

    $myArr = array(0 => "a", 1 => "b", 2 => "c", 3 => "d");
    
    // bắt đầu từ phần tử được đánh khóa là 1 và xóa hai phần tử từ đây
    array_splice($myArr, 1, 2);
    
    print_t($myArr);

    Hiển thị:

    Array
    (
        [0] => a
        [1] => d
    )

    Guest

    - 1970/01/01 Trả lời

    Em có thể sử dụng array_diff();
    Ex:

    a = [2,4,6,3,8]
    b = array_diff(a, array('3'))

10 bình luận