Edit report at https://bugs.php.net/bug.php?id=64818&edit=1

 ID:                 64818
 Comment by:         mario dot dweller at seznam dot cz
 Reported by:        mario dot dweller at seznam dot cz
 Summary:            array_get
 Status:             Wont fix
 Type:               Feature/Change Request
 Package:            Arrays related
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

And if null is considered as a valid value and the value is deep inside the 
array...

$d = isset($array['a']['b']['c']) && array_key_exists('d', 
$array['a']['b']['c']) ? $array['a']['b']['c']['d'] : 'default';

or just

array_get($array, ['a', 'b', 'c', 'd'], 'default');


Previous Comments:
------------------------------------------------------------------------
[2013-05-12 11:26:01] mario dot dweller at seznam dot cz

In the case you have those keys in a variable like $keys = ['key1', 'key2'] you 
can access it only using a loop. That's one of the purpose of the function.

BTW what looks better and what is more readable?

$a = isset($array['a']) ? $array['a'] : null;
$b = array_key_exists('b', $array) ? $array['b'] : 'default';

or

$a = array_get($array, 'a');
$b = array_get($array, 'b', 'default');

?

------------------------------------------------------------------------
[2013-05-12 11:13:28] paj...@php.net

@niki

Arg right. But still should not be added, zero value added here.

------------------------------------------------------------------------
[2013-05-12 10:56:45] ni...@php.net

@Pierre:
isset($array['key1']['key2']) ?: NULL
is the same as
isset($array['key1']['key2']) ? isset($array['key1']['key2']) : NULL
is the same as "true" if the key exists, "null" if it doesn't.

That's not what this req is about.

------------------------------------------------------------------------
[2013-05-12 10:53:39] paj...@php.net

$val = isset($array['key1']['key2']) ?: NULL;

We already have an operator for that ($v = (iftrue) ?: defaultvalue).

Operators are also much more efficient than a function call.

------------------------------------------------------------------------
[2013-05-12 10:37:02] mario dot dweller at seznam dot cz

fl at nyggen dot com: I know this is possible. But i don't like suppressing 
warning in this situation. And 

@$array['key1']['key2'] ?: 'Key not found'

And the valid value could be false/0/""/"0"/[].

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=64818


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64818&edit=1

Reply via email to