Существует ли встроенная функция php (5+), которая делает следующее в 1 строке?

function array_value_from_key($array,$key) { return !empty($array[$key]) ? $array[$key] : null; } 

Причина, по которой я спрашиваю, состоит в том, что у меня есть функция класса, которая возвращает массив.

Вместо того, чтобы делать

 $myArray = myClass::giveMeArray(); $myValue = $myArray[$myKey]; 

Я хотел бы сделать что-то вроде

 $myValue = array_value_from_key(myClass::giveMeArray(),$myKey); 

Когда объект возвращается, вы можете связать объект, например

 $myValue = myClass::giveMeObject()->aValue; 

Вуаля, хорошая и чистая .. неспособность найти то, что кажется простой и тривиальной функцией, сводит меня с ума …

PS .. еще один пример того, как я хотел бы использовать такую ​​функцию

 if(arrayKeyVal(aClass::giveMeArray(),$myKey)) { do_something(); } 

Я не пробовал, но:

 $myValue = @$myArray[$myKey]; 

может работать, хотя я честно думаю, что вам было бы лучше использовать

 $myValue = (array_key_exists($myKey, $myArray)) ? $myArray[$myKey] : null; 

Вы можете вернуть ArrayObject , например.

 <? class MyClass { public static function getArray() { $arr = array('dave' => 1, 'bob' => 2, 'james' => 3); return new ArrayObject($arr, ArrayObject::ARRAY_AS_PROPS); } } $var = MyClass::getArray()->bob; ?> 

$ myValue = ($ tmp = myClass :: giveMeArray () && $ tmp [$ myKey])? $ tmp [$ myKey]: null;

Это некрасиво, но все будет сделано в одной строке. 😉

Почему бы вам не изменить функцию giveMeArray () следующим образом:

 function giveMeArray($key = false) { $array = $whatever; $toret = null; if ($key) { if (array_key_exists($key, $array)) { $toret = $array[$key]; } } else { $toret = $array() } return $toret; } 

Тогда вы можете назвать это как

 $arr = myClass::giveMeArray(); //To get the whole array $value = myClass::giveMeArray($myKey); //To get the specific element 

EDIT : Оказывается, мне нужно освежить мой PHP5. Мой ответ ниже неверен и применим только к PHP4, поскольку PHP5 имеет цепочку методов .


PHP не позволяет вам объединять операторы return из таких функций, как на многих других языках. например, в Javascript:

 document.getElementById('abc').style.color = "#fff"; 

Это немного боль, но так оно и есть. Эквивалент, который вы должны сделать в PHP, – это хранить временные переменные. Вот вышесказанное, как вам пришлось бы писать, если бы это был PHP: (очевидно, это не настоящие функции PHP)

 $myElement = $document->getElementById('abc'); $myElement->style->color = "#fff"; 

Один из немногих положительных в этом заключается в том, что он облегчает отладку.

Обратите внимание, что это относится только к функциям: вы можете «цеплять» свойства объектов:

 $myObject->myArray[5]->anotherProperty->anotherArray[3]->anotherObject->aFunction(); 

поэтому, короче говоря, если вы хотите использовать результат функции, вы должны сначала ее сохранить