Re: A 'missing' PHP primitive?

[email protected] ("Christoph M. Becker")
Newsgroups php.general
Message-ID <[email protected]>
On 09.11.2016 at 16:02, Josh Stern wrote:

> Hi, I'm wondering if there is any built-in PHP primitives to perform the
> same task as this simple, almost trivial function:
> 
> function get(&$var) {
>      return $var;
> }
> 
> ?
> 
> 
> It is useful for accessing arrays where some fields may be unset.  For
> example:
> 
> ************************************************
> 
> <?php
> 
> 
> function get(&$var) {
>      return $var;
> }
> 
> $arr = array();
> $arr[5] = 'sam';
> $arr[2] = 'chris';
> $arr[3] = null;
> 
> $fromGet5 =  get($arr[5]);
> $fromGet1 = get($arr[1]);
> 
> echo "Value of fromGet5 is $fromGet5\n";
> echo "Value of fromGet1 is $fromGet1\n";
> 
> $fromGet5 = 'fred';
> 
> echo "Value of fromGet5 is now $fromGet5\n";
> 
> echo "Value of arr[5] is still $arr[5]\n";
> 
> **************************************************
> 
> 
> Assigning the value directly, without the function, as in <$fromGet1 =
> &$arr[1]> transfers the value & the reference, which is undesirable &
> likely to lead to hard to detect bugs.  Assignment without a reference
> generates errors for undefined array keys.
> 
> The inline code  (isset($arr[1]) ? $arr[1] : NULL) is cumbersome to keep
> typing over & over again & logically might be less efficient since it
> appears to fetch arr[1] twice, though there may be some hidden
> optimization.

As of PHP 7.0.0 there is the null coalescing opertor, so you can write:

  $arr[1] ?? NULL

> It seems like there should be a built in primitive called 'get' or
> 'ifset' that does this task.

See
<https://nikic.github.io/2014/01/10/The-case-against-the-ifsetor-function.html>.

> Wondering how others handle this issue & what I might be missing...

-- 
Christoph M. Becker
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.