我真的必须这样做才能重置阵列吗?
foreach ($array as $i => $value) {
unset($array[$i]);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这个更有意义,因为前一个相当于 $array=array();
foreach ($array as $i => $value) {
$array[$i]=NULL;
}
Run Code Online (Sandbox Code Playgroud)
Tyl*_*ter 47
$keys = array_keys($array);
$values = array_fill(0, count($keys), null);
$new_array = array_combine($keys, $values);
Run Code Online (Sandbox Code Playgroud)
获取钥匙
获取具有相同数量元素的空值数组
使用键和键组合它们,并将空值作为值
正如评论所暗示的那样,从PHP 5.2开始就很容易 array_fill_keys
$new_array = array_fill_keys(array_keys($array), null);
Run Code Online (Sandbox Code Playgroud)
小智 24
使用旧键和空值填充数组
$array = array_fill_keys(array_keys($array), null)
aef*_*fxx 11
定义此功能并在需要时调用它:
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);
Run Code Online (Sandbox Code Playgroud)
就这样!
没有内置函数可以将数组重置为它的键.
另一种方法是通过回调和array_map():
$array = array( 'a' => 'foo', 'b' => 'bar', 'c' => 'baz' );
Run Code Online (Sandbox Code Playgroud)
具有常规回调功能
function nullify() {}
$array = array_map('nullify', $array);
Run Code Online (Sandbox Code Playgroud)
或者使用PHP <5.3的lambda
$array = array_map(create_function('', ''), $array);
Run Code Online (Sandbox Code Playgroud)
或者从PHP 5.3开始使用lambda
$array = array_map(function() {}, $array);
Run Code Online (Sandbox Code Playgroud)
在所有情况下var_dump($array);输出:
array(3) {
["a"]=> NULL
["b"]=> NULL
["c"]=> NULL
}
Run Code Online (Sandbox Code Playgroud)
获取数组键,然后使用它们创建一个包含 NULL 值的新数组:
array_fill_keys(array_keys($array), NULL);
Run Code Online (Sandbox Code Playgroud)
关于 array_fill_keys():
array_fill_keys() 函数用指定键的值填充数组。
关于 array_keys():
array_keys() 函数返回数组的所有键。