- var_dump: documentation ( source)
<?php
class Notification
{
public $is_notifyable;
public $children = [];
}
function mergeNotifications(Notification ... $notifications) : array
{
$result = [];
foreach ($notifications as $notification) {
// Can no longer be "empty"
// if (empty($notification)) continue;
// is_notifyable is now a promise that your interface made:
if ($notification->is_notifyable) {
$result[] = $notification;
}
else
{
// flatten the notifications recursively:
foreach(mergeNotifications(...$notification->children) as $child)
{
$result[] = $child;
}
}
}
return $result;
}
$arr = [
new Notification(),
new Notification(),
];
var_dump(mergeNotifications(...$arr));