簡體   English   中英

PHP array_walk 不會改變數組的值

[英]PHP array_walk doesn't change the array's values

我有這個簡單的代碼:

$postCopy = $_POST['adminpanel'];
array_walk($postCopy, function($v, $k) {
    return '';
});

我在array_walk執行之前和之后為postCopy做了var_dump 在兩次var_dump執行中,我得到相同的結果:

array(2) { ["usefulinfo_countryfilescount"]=> string(1) "3" ["strageticoverviews_filesinpagecount"]=> string(1) "3" }

所以這意味着array_walk沒有正確執行,因為如果它會 - 我會得到一個帶有''值的數組......

您只是忘記通過引用傳遞參數:

$postCopy = $_POST['adminpanel'];
array_walk($postCopy, function(&$v, $k) {
    $v = '';
});

手冊

注意

如果callback需要處理數組的實際值,請將callback的第一個參數指定為reference 然后,對這些元素所做的任何更改都將在原始數組中進行。

所以你需要改變你的電話:

array_walk($postCopy, function(&$v, $k) {
  $v = "";
});

注意參數列表中的& callback的返回值實際上並沒有被使用。

另外,如果要修改數組的所有元素,請考慮使用array_map

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM