самый быстрый способ получить значения элемента из объекта массива в php - PullRequest
2 голосов
/ 26 июля 2011

У меня есть что-то вроде этого

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 ]

6 голосов
/ 26 июля 2011

Вы можете сделать это с картой массива и функцией, но это также будет повторять ваш массив

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

function getEmail($obj)
{
  return $obj->Email;
}
3 голосов
/ 26 июля 2011

Самым простым решением действительно будет foreach() для перебора всех элементов вашего массива;добавив, для каждого элемента, электронное письмо в другой результирующий массив.


Возможно, вы могли бы заменить foreach вызовом array_walk(), но, вероятно, это не изменитсямного:

  • Вы не будете зацикливаться в PHP, так как array_walk закодирован в C (может быть немного быстрее, чем foreach - хотя и не уверен)
  • Но для каждого элемента будет вызываться функция, а не просто пара инструкций PHP.

Вам нужно будет выполнить сравнительный анализ, чтобы увидеть, есть ли существенная разница в вашем конкретномслучай - но я лично пошел бы на foreach, не думая намного больше.

0 голосов
/ 26 июля 2011

array_filter лучше всего ... см. Примеры в руководстве

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...