我有包含这些元素的数组:id,email,type
我想删除类型和ID并保留电子邮件。
我已经回显并打印了数组和后续元素,一切都很好。
但是为了过滤数组并仅返回列表电子邮件,将编写以下代码,但这些代码无效:
$arr = array_walk($final_list, function($var){
return $var['email'];
});
如果我回复$var['email']
,它会相应地回复电子邮件。
答案 0 :(得分:1)
array_walk()
用于将回调函数应用于数组中的所有元素。要过滤数组,请改用array_filter()
。
$arr = array_filter($final_list, function ($elem) {
return $elem == 'email';
});
但是,如果您使用的是PHP 5.5+,则可以使用非常方便的函数array_column()
来实现此目的:
$arr = array_column($final_list, 'email');
如果您使用的是旧版本的PHP并且无法升级到PHP 5.5,则可以使用该函数的Userland实现(由为PHP核心编写array_column()
函数的同一作者编写)。源代码可在this GitHub repository上找到。
答案 1 :(得分:1)
您正在使用array_walk
,就好像它是array_map
一样。这可行:
$arr = array_map(function($var){ return $var['email']; }, $final_list);
在PHP 5.5+上还有一种更方便的方法:
$arr = array_column($final_list, 'email');
以上两个版本都是非破坏性的:它们会从您的输入数组中创建电子邮件数据的副本。
仅为了完整性,并且在(不太可能)你不想要这种情况的情况下,因为它耗尽了额外的内存,而宁愿通过从中删除数据来修改你的输入,{{1}是一个选项:
array_walk