suz*_*suz 6 php arrays foreach multidimensional-array unset
我得到了多维数组.从每个子数组,我想删除/取消设置索引1的值.我的数组$ data.
Array
(
[3463] => Array
(
[0] => 1
[1] => 2014
[context] => 'aaa'
)
[3563] => Array
(
[0] => 12
[1] => 2014
[context] => 'aaa'
)
[2421] => Array
(
[0] => 5
[1] => 2014
[context] => 'zzz'
)
)
Run Code Online (Sandbox Code Playgroud)
我想从子数组中删除索引为'1'的每个元素.期望的输出是:
Array
(
[3463] => Array
(
[0] => 1
[context] => 'aaa'
)
[3563] => Array
(
[0] => 12
[context] => 'aaa'
)
[2421] => Array
(
[0] => 5
[context] => 'zzz'
)
)
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
foreach ($data as $subArr) {
foreach ($subArr as $key => $value) {
if ($key == '1') {
unset($subArr[$key]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我很抱歉,如果这个问题对你们来说是微不足道的话.
Pou*_*abi 11
简单的方法!?你可以用一个foreach做到这一点!
foreach ($data as $key => $subArr) {
unset($subArr['1']);
$data[$key] = $subArr;
}
Run Code Online (Sandbox Code Playgroud)
您正在更改子数组而不是主要数组,请尝试这样做可能会有所帮助
foreach ($data as $key => $subArr) {
unset($data[$key][1]);
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为$subArr从外部foreach包含值的副本$data和内部foreach修改这些副本,留下$data未触及.
您可以修复通过讲述PHP作出$subArr引用存储在原始值$data:
foreach ($data as &$subArr) {
foreach ($subArr as $key => $value) {
if ($key == '1') {
unset($subArr[$key]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用功能array_map().它使用一个可以检查(和修改)每个值的回调函数,$data并返回一个新数组.
$clean = array_map(
function (array $elem) {
unset($elem['1']); // modify $elem
return $elem; // and return it to be put into the result
},
$data
);
print_r($clean);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14362 次 |
| 最近记录: |