Re: xarray - The missing array functions you are looking for, implemented in Extension
| From: | Lin Yo-an | Date: | Fri, 16 Oct 2015 07:58:55 +0000 |
| Subject: | Re: xarray - The missing array functions you are looking for, implemented in Extension | ||
| References: | 1 2 3 4 5 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-325201@lists.php.net to get a copy of this message | ||
New function added to xarray extension:
$array = [
"created_at" => ...
"updated_at" => ....
];
array_keys_replace($array, [
"_at" => "_on",
]);
> On Oct 15, 2015, at 12:40, Lin Yo-an <cornelius.howl@gmail.com> wrote:
>
> On Oct 15, 2015, at 06:44, Ryan Pallas <derokorian@gmail.com> wrote:
>>
>> array_pluck is in the language, called array_column
>
> array_pluck is designed to support dot expression, for example:
>
> array_pluck($array, "parent.child.child1.attr");
>
>> array_remove is just array_filter, why do I need another function for that?
>
> array_filter only passes value to the callback. in PHP 5.6, there is a new option to pass both
> key and value,
> however PHP 5.5 doesn't have this option.
>
> Implementing this function in extension make it possible.
>
>> array_add - why do I need the overhead of a function call, when I can do $a[
>> *key*] = *value*
>
> The reason has been described in the document: array_add only adds data when the key
> doesn't exist.
>
> You can treat it as a set operation.
>
> $array = [ ];
> array_add($array, "key", 10); // key => 10, return true
> array_add($array, "key", 20); // key => 10 still, return false
>
>> array_build - this seems neat, but I think it needs a better example, I can
>> do the example already with array_combine(array_column(), array_column())
>
> By using array_build, you can pass complex structure as the new value, or adding complex logic
> in the callback.
>
>> array_each - this is just a foreach with an isolated scope and function
>> overhead on every iteration, why would I want that?
>
> Yeah I have to admit it's pretty much similar, however sometimes you want to pass a
> iteration handler from external,
> and array_map returns a new array, array_each is faster than array_map because it's much
> lightweight and it doesn't return value.
>
>> array_keys_join - while I like this, why doesn't it have the same argument
>> order as implode/join (glue, array)?
>
> The reason I put array as the first argument is, consistency. and actually the
> "glue" is optional, so you can simply ignore the argument.
>
> $key = array_keys_join($array);