array_push 对于带有数字键的 stdClass
array_push for stdClass with numeric keys
我正在尝试使用类似于 array_push
的函数,但用于 PHP 中的对象 (stdClass)。看看我的期望:
<?php
$obj = new stdClass();
$obj->a = 'foo';
$obj->{'0'} = 'far';
var_dump($obj);
// > object(stdClass)#1 (2) { ["a"]=> string(3) "foo" ["0"]=> string(3) "far" }
var_dump(object_push($obj, 'coin'));
// > object(stdClass)#1 (3) { ["a"]=> string(3) "foo" ["0"]=> string(3) "far" ["1"]=> string(4) "coin" }
你可以使用这个功能object_push
:
function object_push($object, $value) {
$object->{max(array_filter(array_keys((array) $object), 'is_numeric') + [-1]) + 1} = $value;
return $object;
}
然后像使用一样使用它 array_push
:
$obj = new stdClass();
$obj->a = 'foo';
$obj->{'0'} = 'far';
var_dump($obj);
// > object(stdClass)#1 (2) { ["a"]=> string(3) "foo" ["0"]=> string(3) "far" }
var_dump(object_push($obj, 'coin'));
// > object(stdClass)#1 (3) { ["a"]=> string(3) "foo" ["0"]=> string(3) "far" ["1"]=> string(4) "coin" }
和平
我正在尝试使用类似于 array_push
的函数,但用于 PHP 中的对象 (stdClass)。看看我的期望:
<?php
$obj = new stdClass();
$obj->a = 'foo';
$obj->{'0'} = 'far';
var_dump($obj);
// > object(stdClass)#1 (2) { ["a"]=> string(3) "foo" ["0"]=> string(3) "far" }
var_dump(object_push($obj, 'coin'));
// > object(stdClass)#1 (3) { ["a"]=> string(3) "foo" ["0"]=> string(3) "far" ["1"]=> string(4) "coin" }
你可以使用这个功能object_push
:
function object_push($object, $value) {
$object->{max(array_filter(array_keys((array) $object), 'is_numeric') + [-1]) + 1} = $value;
return $object;
}
然后像使用一样使用它 array_push
:
$obj = new stdClass();
$obj->a = 'foo';
$obj->{'0'} = 'far';
var_dump($obj);
// > object(stdClass)#1 (2) { ["a"]=> string(3) "foo" ["0"]=> string(3) "far" }
var_dump(object_push($obj, 'coin'));
// > object(stdClass)#1 (3) { ["a"]=> string(3) "foo" ["0"]=> string(3) "far" ["1"]=> string(4) "coin" }
和平