2012-02-01 27 views
0

我有一個方法,可以很酷的神奇東西,然後以數組的形式返回我的結果。如何從一個方法返回的數組中獲取數據?

因此,例如

public function somemethod() 
{ 
    some stuff that builds an array 

    return $stuff; 
} 

如果你做一個

$s = stuff(); 
print_r($s->somemethod()); 

你喜歡的東西

array('a' => 'hi', 'b' => 'hello', 'c' => 'konnichiwa') 

如何訪問每個數組元素?

$s->somemethod()->a? 

$s->somemethod()['a']

回答

1

使用的foreach:

foreach($s->somemethod() as $key => $value) 
    //process $key and $value 
} 

或1以1:

$arr = $s->somemethod(); 
$arr['a'] 
// $arr['b'] 
// $arr['c'] 
1

你只需做到這一點:

$a = $s->somemethod(); 
echo($a[ "a" ]); 
0
function objectToArray($object){ 
if(!is_object($object) && !is_array($object)){ 
    return $object;} 
if(is_object($object)){ 
    $object = get_object_vars($object);} 
    return array_map('objectToArray', $object);} 
+0

我可以說功能添加到方法? – Eli 2012-02-01 08:05:36

+0

將你的函數返回給這個函數.. – 2012-02-01 08:08:47

1

你有三個選擇:

訪問過的所有元素

$a = $s->somemethod(); 
foreach ($a as $key => $value) 
{ 
    echo $key . ': ' $value 
}; 

移動元件到變量一個元件直接

$a = $s->somemethod(); 
echo $a['a']; 

環路

list($a, $b, $c) = $s->somemethod(); 
+0

有趣的是使用'list()'來壞,不能以更動態的方式使用而不必硬編碼變量名 – Eli 2012-02-01 08:09:03

+0

你想要什麼?你可以跳過參數,如果你的函數返回更多的參數,它們將被忽略。 'list($ a,,$ c)= array(1,2,3,4)'。見http://php.net/manual/en/function.list.php – PiTheNumber 2012-02-01 08:18:05

0

注:PHP 5.4是發佈但現在

在PHP 5.4,你可以直接使用以下命令:

echo $s->somemethod()['a']; 
+0

我不耐煩地等待那12天! – Eli 2012-02-01 08:08:08

+0

這麼多的權力,沒有責任:P – andho 2012-02-01 08:09:31

相關問題