Bagaimana saya bisa menghapus kunci dan nilainya dari array asosiatif?


Jawaban:


377

Kamu bisa memakai unset :

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

Contoh:

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

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

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

Keluaran:

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

21
+1: Terima kasih atas bantuannya. PHP newb di sini, tetapi perlu dicatat bahwa jika Anda mencoba untuk melakukan pengeditan ini dalam satu foreachloop, maka Anda perlu menambahkan sebuah ampersand ke variabel enumerasi Anda untuk memungkinkan akses tulis.
FreeAsInBeer

1
Berikut adalah tautan ke solusi yang menggambarkan komentar oleh tautan @FreeAsInBeer sehubungan dengan ampersand.
Danimal Reks


22

Gunakan fungsi ini untuk menghapus array kunci tertentu tanpa mengubah array asli:

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

Param pertama melewati semua larik, param kedua mengatur larik kunci untuk dihapus.

Sebagai contoh:

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

1
Anda harus menutup tanda kutip pada$output = array_except($array_1, ['color', 'fixed']);
Abraham Brookes


3

Pertimbangkan array ini:

$arr = array("key1" => "value1", "key2" => "value2", "key3" => "value3", "key4" => "value4");
  • Untuk menghapus elemen menggunakan array 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" }
  • Untuk menghapus elemen dengan 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" } 

baca lebih lanjut tentang array_diff: http://php.net/manual/en/function.array-diff.php

  • Untuk menghapus elemen dengan menggunakan index:

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

baca lebih lanjut tentang array_splice: http://php.net/manual/en/function.array-splice.php


2

Anda mungkin memerlukan dua loop atau lebih tergantung pada array Anda:

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

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

1
foreach ($key1sepertinya salah. Apakah maksud Anda foreach ($values?
Pang
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.