【发布时间】:2020-12-15 01:11:20
【问题描述】:
我正在尝试取消设置对象数组中所有对象的键(基本上删除任何密码),这样做:
foreach ( $data['users'] as $user) {
unset($user['password']);
}
但它似乎不会影响“原始”数据......我如何通过引用来做到这一点(或使这项工作成为“预期”所需的任何东西——我的意思是,密钥已从原始数组中的所有对象)?
【问题讨论】:
我正在尝试取消设置对象数组中所有对象的键(基本上删除任何密码),这样做:
foreach ( $data['users'] as $user) {
unset($user['password']);
}
但它似乎不会影响“原始”数据......我如何通过引用来做到这一点(或使这项工作成为“预期”所需的任何东西——我的意思是,密钥已从原始数组中的所有对象)?
【问题讨论】:
您可以像这样传递$user 作为参考:
// check this --------------v
foreach ( $data['users'] as &$user) {
unset($user['password']);
}
【讨论】:
试试:
foreach ( $data['users'] as $key => $user) {
unset($data['users'][$key]['password']);
}
或者
foreach ( $data['users'] as &$user) {
unset($user['password']);
}
【讨论】:
我的建议:
array_walk($data['users'], function(&$a) {unset($a['password']);});
【讨论】:
foreach 比array_walk 快还是慢。也许对于一个小数组,差异可以忽略不计,所以问题不存在。通常,我喜欢不循规蹈矩的解决方案,以便学到更多东西。