从php中的数组对象获取元素值的最快方法

时间:2011-07-26 10:33:33

标签: php arrays object

我有类似的东西

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迭代它,但我有一个非常大的列表,无论如何要更快地做到这一点?感谢

现在,如何根据某些电子邮件地址删除索引?

3 个答案:

答案 0 :(得分:6)

您可以使用数组映射和函数执行此操作,但这也将迭代您的数组

echo implode(',',array_map('getEmail',$array));

function getEmail($obj)
{
  return $obj->Email;
}

答案 1 :(得分:3)

最简单的解决方案确实是foreach()来遍历数组的所有项目;为每个项目添加电子邮件到另一个结果数组。


也许你可以通过调用array_walk()替换foreach,但它可能不会有太大变化:

  • 您不会在PHP中循环,因为array_walk在C 中编码(可能比foreach快一点 - 但不确定)
  • 但是会为每个项目调用一个函数,而不只是几个PHP指令。

你必须进行基准测试,看看你的具体情况是否存在显着差异 - 但是我个人会在没有考虑更多的情况下去寻求预测。

答案 2 :(得分:0)

array_filter 最好..请参阅手册上的示例