@ 2015-12-23T02:53:59Z <?php declare(strict_types = 1);
namespace Acme {
class Collection {
private $_items;
public function __construct(array $items = [])/*: void*/ {
$this->_items = $items;
}
public function filter(callable $callback): self {
foreach ($this->_items as $key => $value) {
if (!call_user_func($callback, $value)) {
unset($this->_items[$key]);
}
}
return $this;
}
public function map(callable $callback): self {
foreach ($this->_items as $key => $value) {
$this->_items[$key] = call_user_func($callback, $key, $value);
}
return $this;
}
public function reindex(): self {
$this->_items = array_values($this->_items);
return $this;
}
public function sprintf(string $format): self {
return $this->map(function ($key, $value) use ($format) {
return substr_count($format, '%s') === 1
? sprintf($format, $value)
: sprintf($format, $key, $value);
});
}
public function implode(string $delimiter = ''): string {
$output = '';
$first = TRUE;
foreach ($this->_items as $value) {
if ($first) {
$output .= $value;
$first = FALSE;
} else {
$output .= "$delimiter$value";
}
}
return $output;
}
public static function property(string $property): callable {
return function ($key, $value) use ($property) {
return $value->$property;
};
}
}
}
namespace {
use Acme\Collection;
echo (new Collection([
'one',
'two',
(object)['foo' => 'FOO', 'bar' => 'BAR', 'baz' => 'BAZ'],
'three',
(object)['bar' => 'BAR', 'qux' => 'QUX'],
]))
->filter('is_object')
->map(Collection::property('bar'))
//->reindex()
->sprintf('(%s,%s)')
->implode('_');
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.0.0 - 7.0.33 , 7.1.0 - 7.1.33 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 , 8.2.0 - 8.2.18 , 8.3.0 - 8.3.4 , 8.3.6 (2,BAR)_(4,BAR) Output for 8.3.5 Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
(2,BAR)_(4,BAR) Output for 5.5.0 - 5.5.38 , 5.6.0 - 5.6.40 Warning: Unsupported declare 'strict_types' in /in/2CYcM on line 1
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/2CYcM on line 9
Process exited with code 255 . preferences:dark mode live preview
224.63 ms | 402 KiB | 330 Q