在php中从数组对象获取元素值的最快方法
我有类似的东西在php中从数组对象获取元素值的最快方法,php,arrays,object,Php,Arrays,Object,我有类似的东西 Array ( [0] => stdClass Object ( [CustomerID] => 14 [Email] => joe.blogs@example.com [LastName] => Blogs [BirthDayOfMonth] => 29 [Gender] =>
Array
(
[0] => stdClass Object
(
[CustomerID] => 14
[Email] => joe.blogs@example.com
[LastName] => Blogs
[BirthDayOfMonth] => 29
[Gender] =>
[Occupation] =>
[SendSpecialOffers] => 1
[SendReminderNotes] => 1
)
[1] => stdClass Object
(
[CustomerID] => 1460
[Email] => example@example.com
[LastName] => Example
[BirthDayOfMonth] => 5
[Gender] => F
[Occupation] =>
[SendSpecialOffers] => 1
[SendReminderNotes] => 1
)
);
'joe.blogs@example', 'example@example.com'
我想得到每个人的电子邮件地址,用逗号隔开,类似这样的东西
Array
(
[0] => stdClass Object
(
[CustomerID] => 14
[Email] => joe.blogs@example.com
[LastName] => Blogs
[BirthDayOfMonth] => 29
[Gender] =>
[Occupation] =>
[SendSpecialOffers] => 1
[SendReminderNotes] => 1
)
[1] => stdClass Object
(
[CustomerID] => 1460
[Email] => example@example.com
[LastName] => Example
[BirthDayOfMonth] => 5
[Gender] => F
[Occupation] =>
[SendSpecialOffers] => 1
[SendReminderNotes] => 1
)
);
'joe.blogs@example', 'example@example.com'
我知道我可以通过foreach进行迭代,但我得到了一个非常大的列表,有没有更快的方法?谢谢
现在,如何删除基于某些电子邮件地址的索引?最简单的解决方案确实是使用
foreach()
迭代数组中的所有项;将每个项目的电子邮件添加到另一个结果数组中
也许您可以通过调用来替换foreach,但它可能不会有太大变化:
- 您不会在PHP中循环,因为
是用C编写的(可能比foreach快一点——不过不确定)array\u walk
- 但是会为每个项调用一个函数,而不仅仅是几个PHP指令
您必须进行基准测试,以查看您的具体情况是否存在显著差异——但我个人会选择foreach,而不会考虑太多。您可以使用数组映射和函数进行此操作,但这也会迭代您的数组
echo implode(',',array_map('getEmail',$array));
function getEmail($obj)
{
return $obj->Email;
}
是最好的。请参阅手册上的示例我希望那些电子邮件地址所有者不介意您将其张贴在这里…;)“但我得到了一个非常大的清单”-ORM的危险
array\u filter()
返回一个元素数组,根据给定的回调,这些元素被视为“有效”。您能解释一下,您想如何使用它从每个数组元素中提取对象属性吗?