2008-11-05 27 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;

這並不美觀,但它會在一行中完成。 ;-)

相關問題