Làm thế nào tôi có thể loại bỏ một khóa và giá trị của nó từ một mảng kết hợp?


Câu trả lời:


376

Bạn có thể sử dụng unset:

unset($array['key-here']);

Thí dụ:

$array = array("key1" => "value1", "key2" => "value2");
print_r($array);

unset($array['key1']);
print_r($array);

unset($array['key2']);
print_r($array);

Đầu ra:

Array
(
    [key1] => value1
    [key2] => value2
)
Array
(
    [key2] => value2
)
Array
(
)

20
+1: Cảm ơn sự giúp đỡ. PHP newb ở đây, nhưng đáng chú ý là nếu bạn đang cố gắng thực hiện các chỉnh sửa này bên trong một foreachvòng lặp, thì bạn cần phải thêm một dấu và vào biến liệt kê để cho phép truy cập ghi.
FreeAsInBeer

Đây là một liên kết đến một giải pháp minh họa nhận xét bằng liên kết @FreeAsInBeer liên quan đến ký hiệu.
Danimal Reks


22

Sử dụng chức năng này để loại bỏ các mảng phím cụ thể mà không sửa đổi mảng gốc:

function array_except($array, $keys) {
  return array_diff_key($array, array_flip((array) $keys));   
} 

Param đầu tiên vượt qua tất cả mảng, param thứ hai thiết lập mảng các phím cần loại bỏ.

Ví dụ:

$array = [
    'color' => 'red', 
    'age' => '130', 
    'fixed' => true
];
$output = array_except($array, ['color', 'fixed']);
// $output now contains ['age' => '130']

1
bạn cần phải đóng dấu ngoặc kép của mình vào$output = array_except($array_1, ['color', 'fixed']);
Abraham Brookes


3

Hãy xem xét mảng này:

$arr = array("key1" => "value1", "key2" => "value2", "key3" => "value3", "key4" => "value4");
  • Để loại bỏ một phần tử bằng cách sử dụng mảng key:

    // To unset an element from array using Key:
    unset($arr["key2"]);
    var_dump($arr);
    // output: array(3) { ["key1"]=> string(6) "value1" ["key3"]=> string(6) "value3" ["key4"]=> string(6) "value4" }
  • Để xóa phần tử bằng cách value:

    // remove an element by value:
    $arr = array_diff($arr, ["value1"]);
    var_dump($arr);
    // output: array(2) { ["key3"]=> string(6) "value3" ["key4"]=> string(6) "value4" } 

đọc thêm về mảng_diff: http://php.net/manual/en/feft.array-diff.php

  • Để xóa phần tử bằng cách sử dụng index:

    array_splice($arr, 1, 1);
    var_dump($arr);
    // array(1) { ["key3"]=> string(6) "value3" } 

đọc thêm về mảng_splice: http://php.net/manual/en/feft.array-splice.php


2

Bạn có thể cần hai hoặc nhiều vòng lặp tùy thuộc vào mảng của bạn:

$arr[$key1][$key2][$key3]=$value1; // ....etc

foreach ($arr as $key1 => $values) {
  foreach ($key1 as $key2 => $value) {
  unset($arr[$key1][$key2]);
  }
}

1
foreach ($key1có vẻ sai Ý bạn là foreach ($valuessao
Pang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.