這個問題在這里已經有了答案: 取消設定多維陣列中的列 6 個回答 19 小時前關閉。
我有一個這樣的陣列:
$arr = [
['id' => 12, 'name' => 'Martin', 'cellphone' => '0019949437'],
['id' => 15, 'name' => 'Alex', 'cellphone' => "00183847394"]
];
我需要cellphone從上面的陣列中洗掉該專案。我寫了一個代碼來做到這一點:
$res = array_filter($arr, function($arr){ unset($arr['cellphone']); return $arr; });
但該專案仍然存在并且$res與 相同$arr。怎么了?什么未設定不會發生?
uj5u.com熱心網友回復:
array_filter
使用回呼函式過濾陣列元素
由于您正在嘗試更改嵌套陣列,因此array_filter無法正常作業。
使用回圈,像 a foreach()orarray_walk()應該沒問題。
<?php
// Input
$arr = [
['id' => 12, 'name' => 'Martin', 'cellphone' => '0019949437'],
['id' => 15, 'name' => 'Alex', 'cellphone' => "00183847394"]
];
// Using foreach
foreach($arr as &$tmp) {
unset($tmp['cellphone']);
}
// Same result, using array_map
array_walk($arr, function (&$tmp) { unset($tmp['cellphone']); });
// Show result
var_dump($arr);
這里我們回圈$arr,用于&獲取對更深陣列的參考,并用于unset()洗掉cellphone。
結果:
array(2) {
[0]=>
array(2) {
["id"]=>
int(12)
["name"]=>
string(6) "Martin"
}
[1]=>
&array(2) {
["id"]=>
int(15)
["name"]=>
string(4) "Alex"
}
}
在線試試吧!
uj5u.com熱心網友回復:
使用array_map:它回傳一個包含應用回呼結果的陣列
$arr = [
['id' => 12, 'name' => 'Martin', 'cellphone' => '0019949437'],
['id' => 15, 'name' => 'Alex', 'cellphone' => "00183847394"]
];
function unsetCellPhone($u){
unset($u['cellphone']);
return $u;
}
$res = array_map("unsetCellPhone", $arr);
print_r($res);
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315502.html
