2008-11-05 67 views
1
function array_value_from_key($array,$key) 
{ 
    return !empty($array[$key]) ? $array[$key] : null; 
} 

我问的原因是因为我有一个返回数组的类函数。本地php(5+)函数是否存在可以在1行中执行以下操作的函数?

而不必做

$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(); 
} 

回答

1

我还没有尝试过一个例子,但是:

$myValue = @$myArray[$myKey]; 

威力工作,虽然我真的认为你使用

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

对不起,不是我在找什么,谢谢你的回复。 – Vinh 2008-11-05 06:34:24

+0

这应该是你在找什么。 – eyelidlessness 2008-11-05 06:40:17

+0

不,重点是不要将数组临时存储在变量中。 – Vinh 2008-11-05 06:49:00

-1

编辑会更好:打开OU我需要刷新我的PHP5。我的答案不正确,只适用于PHP4,因为PHP5有method chaining


PHP不允许您链接来自许多其他语言的函数的返回语句。例如,在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(); 

等等,总之,如果你想用一个函数的结果,你必须临时存储它第一个

1

你可以像这样返回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; 

?> 
-1

你为什么不改变,像这样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 
0

$ myvalue的=($ TMP = MyClass的: :giveMeArray()& & $ tmp [$ myKey])? $ tmp [$ myKey]:null;

这并不美观,但它会在一行中完成。 ;-)

相关问题