Bagaimana saya bisa menghapus kunci dan nilainya dari array asosiatif?

183

Diberikan array asosiatif:

array("key1" => "value1", "key2" => "value2", ...)

Bagaimana cara saya menghapus pasangan nilai kunci tertentu, mengingat kunci itu?

gsquare567
sumber
Lihat juga : solusi setara dalam python stackoverflow.com/questions/11277432
dreftymac

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
(
)
Sarfraz
sumber
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
27

Gunakan unset():

unset($array['key1']);
cletus
sumber
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']
Bafi
sumber
1
Anda harus menutup tanda kutip pada$output = array_except($array_1, ['color', 'fixed']);
Abraham Brookes
7

Menggunakan unset:

unset($array['key1'])
Cristian
sumber
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

Sahith Vibudhi
sumber
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]);
  }
}
Ruth VBA
sumber
1
foreach ($key1sepertinya salah. Apakah maksud Anda foreach ($values?
Pang