如何取消设置对象数组中所有对象的键?
Posted
技术标签:
【中文标题】如何取消设置对象数组中所有对象的键?【英文标题】:How to unset a key in all objects in an array of objects? 【发布时间】:2020-12-15 01:11:20 【问题描述】:我正在尝试取消设置对象数组中所有对象的键(基本上删除任何密码),这样做:
foreach ( $data['users'] as $user)
unset($user['password']);
但它似乎不会影响“原始”数据......我如何通过引用来做到这一点(或使这项工作成为“预期”所需的任何东西——我的意思是,密钥已从原始数组中的所有对象)?
【问题讨论】:
【参考方案1】:您可以像这样传递$user
作为参考:
// check this --------------v
foreach ( $data['users'] as &$user)
unset($user['password']);
【讨论】:
很奇怪,我最初尝试过,但无法成功。现在它“以某种方式”确实......当时可能有其他东西破坏了它,谢谢。【参考方案2】:试试:
foreach ( $data['users'] as $key => $user)
unset($data['users'][$key]['password']);
或者
foreach ( $data['users'] as &$user)
unset($user['password']);
【讨论】:
【参考方案3】:我的建议:
array_walk($data['users'], function(&$a) unset($a['password']););
【讨论】:
那么,与其他解决方案相比,是否有性能提升,或者?从其他人的测试看来,foreach 更快......这里有一个例子:ktorides.com/2015/02/php-array_walk-vs-foreach 还有其他...... 我不知道foreach
比array_walk
快还是慢。也许对于一个小数组,差异可以忽略不计,所以问题不存在。通常,我喜欢不循规蹈矩的解决方案,以便学到更多东西。以上是关于如何取消设置对象数组中所有对象的键?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据从另一个可观察对象返回的数组中的键创建可观察/ http请求数组