在数组上迭代,并在PHP中创建项的集合


Iterate over array and create collections of items in PHP?

我有一个巨大的数组,我用foreach循环它。

foreach ($items as $item) {
    $sender = $item->getSender();
    $id = $item->getId();
}

$sender可以是任何字符串,但不同的项目($item)可以具有相同的字符串。这意味着在一个foreach中,$sender可以具有相同的值。现在,我想将id($id)存储在一个数组或类似的东西中,用于每个$sender。因此,如果$sender是"abcde"3次,我想要一个包含3个项目的数组,假设$sender为"ztra"2次,我也希望有一个包含2个ID的数组。

所以我需要的是每个发件人的ID集合,我该怎么做呢?

谢谢!

$perSender = array();
foreach ($items as $item) {
    $perSender[$item->getSender()][] = $item->getId();
}
var_dump($perSender);

应该做到这一点。。。。

如果在每个数组中存储一个数组,那么每个项目就可以有一个所需的任何东西的集合。

在多个ID的情况下,这很容易:

$items = array(
   array( 'id' => array(1,2,3,4), 'otherStuff'=>'xyz' ),
   array( 'id' => array(5,6,7,8), 'otherStuff'=>'abc' ),
);