2012-08-31 40 views
1

比方說,我有這樣的:如何在不首先聲明變量的情況下從函數輸出的數組中返回單個值?

function data() { 
    $out['a'] = "abc"; 
    $out['b'] = "def"; 
    $out['c'] = "ghi"; 
    return $out; 
} 

我可以輸出通過聲明它作爲一個變量,然後使用數組索引呼應它的數據:

$data = data(); 
echo $data['a']; 
echo $data['b']; 
echo $data['c']; 

但是,我打電話功能內聯其他功能,我試圖避免必須首先聲明一個變量。舉例來說,我想要做這樣的事情:

echo data()[0]; //pulls first value in array without declaring it as a variable first. This needs to be variable i.e. data()[1] data()[2] etc. 

或者更具體地說,實際上,我試圖做它作爲一個類:

$traverseXML->getData("Route", "incoming", "field", "value")[0] 
//getData() returns an array, I'm trying to get a single value. 
+0

請更改。我不明白你真正要求什麼。 –

+1

回波電流(數據()); –

+2

你問的是PHP5.4的一個可用功能http://php.net/manual/en/migration54.new-features.php – deefour

回答

0

個人而言,我會做這樣的事

<?php 
function data($key = false, $default = 'not found') { 
    $out['a'] = "abc"; 
    $out['b'] = "def"; 
    $out['c'] = "ghi"; 
    if($key) 
    { 
     if(isset($out[$key])) 
      return $out[$key]; 
     else 
      return $default; 
    }  

    else 
     return 'empty'; 
} 
?> 

<?= data('a') ?> 
+0

所以你提供數組索引作爲函數參數 - 這是一個相當不錯的解決方案。 – Jared

+0

是的,並與$默認參數該函數將始終返回的東西,你不會得到未定義的索引錯誤。 –

相關問題