$data = [ /** **/];
$res = array_values(array_reduce($data, function (array $acc, array $item) {
$item['count'] = ($acc[$item['id']]['count'] ?? 0) + $item['count'];
$acc[$item['id']] = $item;
return $acc;
}, []));
var_dump($res);
$data = [ /** **/];
$res = [];
foreach($data as $datum) {
$datum['count'] = ($res[$datum['id']]['count'] ?? 0) + $datum['count'];
$res[$datum['id']] = $datum;
}
var_dump(array_values($res));
$filter = function(string $input, string $attr) {
return implode(' ', array_reduce(explode(' ', $input), function(array $acc, string $selector) use($attr) {
$acc[str_starts_with($selector, $attr) ? $attr : $selector] = $selector;
return $acc;
}, []));
};
var_dump($filter('any1 col-12 any2 col-4 any3 col-7 other', 'col-'));
var_dump($filter('any1 col-12 any2 col-4 any3 col-7 other col-7 col-7', 'col-'));
что за формат такой Iterator и как с ним взаимодействовать?
$iterator = $reader->fetchColumnByName('title');
foreach($iterator as $item) {
var_dump($item);
}
type Resp struct {
R struct {
Max int `json:"max"`
Items []int `json:"items"`
} `json:"r"`
}
class Author {
public function __constructor (private Book $book) {
}
}
new Author(new Book())
— явно при создании// Вариант 1
$user->setCounter(clone $user->getCounter());
$user->raiseCount();
// User.php
public function raiseCount(): void
{
$this->counter = $this->counter->add();
}
// Counter.php
public function add(): self
{
$self = clone $this;
++$self->value;
return $self;
}
query = (new QueryBulder())
.select(...)
.with(...)
.from(...)
.all()
.build();
worker = (AbstractFooFactory factory, Params params) => factory.create(params);
worker(new FooMemoryFactory(), new Params())
ngrok --log=stdout http 8081