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
编辑
:原来我需要复习一下我的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();
所以,简而言之,如果你想使用一个函数的结果,你必须先暂时存储它。