On Sun, Jun 30, 2024, at 17:11, Saki Takamachi wrote: > Hi, > > >> Just a suggestion: what about making the returned array an associative > >> array ? Like so: > >> ``` > >> array( > >> 'quotient' => 61, > >> 'remainder' => 1, > >> ); > >> ``` > >> This would remove the need for devs to remember the order of the return > >> values and would make the return value self-documenting. > > > > An associative array would combine the worst of an array (no IDE > > autocompletion, no strong typing, increased memory usage) with the worst of > > an object (no easy way to extract the values into local variables with > > array destructuring). > > > > The example in the RFC doesn't show it, but the following makes the > > proposed API really convenient to use: > > > > $slicesOfPizza = new BcMath\Number(8); > > $mouthsToFeed = new BcMath\Number(3); > > [$perMouth, $slicesLeft] = $slicesOfPizza->divmod($mouthsToFeed); > > > > Note how the order of values matches the words in the method name. First > > the result of 'div', then the result of 'mod’. > > > Thanks, I have added this example to the RFC (Please let me know if you have > any problems). > > > > I came here to say the same thing. The best solution would be not having to > > refer to documentation or experiment with values, and this hits the nail on > > the head. > > > > The only thing that makes it weird is having to write it out, which at that > > point, it is probably faster to type out bcdiv and bcmod separately. > > > > Have you considered simply using references passed to the function? I feel > > like that is more idiomatically php. > > Of course, that idea was proposed, but it was pointed out that current PHP > tends to avoid such implementations, so we didn't adopt it. The reason why > passing by reference was not adopted was added to the RFC. > > Regards, > > Saki
I guess it could go either way: returns by structured array examples: - getimagesize() - parse_url() - pathinfo() - stat() - posix_getpwuid() and then these by reference: - list() -- kinda - array_shift(), array_pop(), etc. - preg_match*() - all the sorts Just thinking through it, return by reference is much more common in PHP than returning structured arrays, and the ones that do make a ton of sense that they do (lots of data). — Rob