<?php
class Person
{
public $id;
public $name;
public $phones = [];
public function __construct($id, $name)
{
$this->id = $id;
$this->name = $name;
}
public function addPhone($phone)
{
$this->phones[] = $phone;
}
}
/**
* @return Person[]
*/
function statementToPersonList(iterable $stmt): array
{
$personList = [];
foreach ($stmt as $row) {
$id = $row['id'];
$name = $row['name'];
$number = $row['number'];
if (!isset($personList[$name])) {
$personList[$name] = new Person($id, $name);
}
$personList[$name]->addPhone($number);
}
return $personList;
}
$personList = statementToPersonList([
['id' => 1, 'name' => 'Alice', 'number' => 'n1'],
['id' => 2, 'name' => 'Alice', 'number' => 'n2'],
['id' => 3, 'name' => 'Bob', 'number' => 'n3'],
['id' => 4, 'name' => 'Carol', 'number' => 'n4'],
['id' => 5, 'name' => 'Alice', 'number' => 'n5'],
]);
print_r($personList);
- Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- Array
(
[Alice] => Person Object
(
[id] => 1
[name] => Alice
[phones] => Array
(
[0] => n1
[1] => n2
[2] => n5
)
)
[Bob] => Person Object
(
[id] => 3
[name] => Bob
[phones] => Array
(
[0] => n3
)
)
[Carol] => Person Object
(
[id] => 4
[name] => Carol
[phones] => Array
(
[0] => n4
)
)
)
preferences:
134.31 ms | 409 KiB | 5 Q