sağlam tuşları tutarken bir diziden tüm değerleri silmek

9 Cevap php

Gerçekten bir dizi sıfırlamak için bunu yapmak zorunda mıyım?

foreach ($array as $i => $value) {
    unset($array[$i]);
}

EDIT:

bir önceki $array=array(); eşdeğer olduğu gibi bu bir, daha mantıklı

foreach ($array as $i => $value) {
    $array[$i]=NULL;
}

9 Cevap

Bu işlevi tanımlayın ve bunu gerektiğinde diyoruz:

function erase_val(&$myarr) {
    $myarr = array_map(create_function('$n', 'return null;'), $myarr);
}

// It's call by reference so you don't need to assign your array to a variable.
// Just call the function upon it
erase_val($array);

Hepsi bu!

$keys = array_keys($array);
$values = array_fill(0, count($keys), null);
$new_array = array_combine($keys, $values);

Tuşlar alın

Elemanların aynı sayıda boş değerlere bir dizi elde

Değerler olarak tuşları ve tuşları ve boşlara kullanarak, bunları birleştirmek

Yorum öneririz, bu array_fill_keys ile PHP 5.2 kadar kolaydır

$new_array = array_fill_keys(array_keys($array), null);

Sadece tuşları bulunuyor için bir dizi sıfırlamak için hiçbir yapı-işlev vardır.

Alternatif bir geri ve array_map() aracılığıyla olacaktır:

$array = array( 'a' => 'foo', 'b' => 'bar', 'c' => 'baz' );

Düzenli arama fonksiyonu ile

function nullify() {}
$array = array_map('nullify', $array);

Veya PHP

$array = array_map(create_function('', ''), $array);

Ya da PHP 5.3 olarak lambda

$array = array_map(function() {}, $array);

Tüm durumlarda var_dump($array); çıkışları:

array(3) {
  ["a"]=> NULL
  ["b"]=> NULL
  ["c"]=> NULL
}

Eski anahtarlar ve null değerleri ile dizi doldurmak

$array = array_fill_keys(array_keys($array), null)

Ben oldukça iyi bir soru olsun, ama örnek yok

foreach ($array as $i => $value) {
    unset($array[$i]);
}

için equivilent edilir

$array = array();
foreach($a as &$v)
   $v = null;

Null bir dizi öğeyi ardındaki mantık, bir dizi, her anahtar için bir değer olması gerekir, aksi takdirde bir anahtar hiçbir mantıklı olmasıdır. Bir anahtar denir nedeni budur - o bir değer erişmek için kullanılır. Bir null değer burada makul bir seçim gibi görünüyor.

Düzenlendi:

Yeniden kullanılabilir sürümü:

function array_purge_values(&$a)
{
    foreach($a as &$v)
       $v = null;
}

Bu PHP version işlevlerine 5.3 geçiren değerlerden başlayarak olsa işlev bildiriminde argüman değişkeni önceki ampersanı gereksiz yani, varsayılan referans unutmayın. Not only that, but you will get a warning that the notion is deprecated.

unset anahtarını silmek istiyorsunuz, Eğer şartının olarak null değer veya 0 ayarlamanız gerekir.

Example

Sadece bunu:

$arrayWithKeysOnly = array_keys($array);

http://php.net/manual/en/function.array-keys.php

DÜZENLEME: Adresleme Yorum:

Tamam, o zaman bunu:

$arrayWithKeysProper = array_flip(array_keys($array));

http://www.php.net/manual/en/function.array-flip.php

EDIT: Aslında muhtemelen ya işe yaramaz olduğunu, bu konuda düşünme.

Neden gerekli tuşları ile bir dizi yapmak ve bunu sıfırlamak istediğiniz zaman değişkene asinging değil?

function resetMyArr(&$arr)
{
 $arr = array('key1'=>null,'key2'=>null); 
}