2010-05-10 46 views
7

PHP函數可以返回很多沒有數組的變量嗎?PHP函數可以返回很多變量嗎?

我想這樣的:

<?php 

public function a() 
{ 
    $a = "a"; 
    $b = "b"; 
    $c = "c"; 

} 

echo a()->a; 
echo a()->b; 
echo a()->c; 

?> 

我怎樣才能獲得$ A,$ B,$ C瓦爾?

回答

8

不是數組,你可以使用關聯數組並將其轉換爲對象,從而允許您使用->對象語法訪問元素:

function a() 
{ 
    return (object) array(
    'a' => "a", 
    'b' => "b", 
    'c' => "c"); 
} 

echo a()->a; // be aware that you are calling a() three times here 
echo a()->b; 
echo a()->c; 
+0

//知道你在這裏調用一次()三次... – 2010-05-10 15:20:04

2

如果要訪問這些變量的方式(不使用數組),你最好使用類:

class Name{ 
    var $a = "a"; 
    var $b = "b"; 
} 

$obj = new Name(); 
echo $obj->a; 
+0

這段代碼是錯誤的,你應該這樣聲明和賦值變量:'var $ a =「a」',或者更好地使用顯式可見性關鍵字:'public $ a ='a'','protected $ a =' a''或'private $ a ='a'' – 2010-05-10 15:03:16

+0

是的,我知道......我是這麼寫的,因爲它可以在PHP4和PHP5上運行。這真的很愚蠢,但有數百萬的PHP4服務器(php4不支持訪問修飾符),而且管理員也懶得升級:D – Cristian 2010-05-10 15:23:49

+0

任何仍在使用php4的人都需要拍攝。 – ThiefMaster 2010-05-10 15:30:47

6
function a1() { 
    return array(
     'a' => 'a', 
     'b' => 'b', 
     'c' => 'c' 
    ); 
} 
$a1 = a1(); 
echo $a1['a']; 
echo $a1['b']; 
echo $a1['c']; 

function a2() { 
    $result = new stdClass(); 
    $result->a = "a"; 
    $result->b = "b"; 
    $result->c = "c"; 
    return $result; 
} 
$a2 = a2(); 
echo $a2->a; 
echo $a2->b; 
echo $a2->c; 
// or - but that'll result in three function calls! So I don't think you really want this. 
echo a2()->a; 
echo a2()->b; 
echo a2()->c; 
2

您可以構建一個類並返回一個對象。查看this SO answer以瞭解您可能會覺得有用的內容。

3

創建一個包含3個變量並返回該類實例的類。例如:

<?php 
class A { 
    public $a; 
    public $b; 
    public $c; 

    public function __construct($a, $b, $c) { 
     $this->a = $a; 
     $this->b = $b; 
     $this->c = $c; 
    } 
} 

function a() { 
    return new A("a", "b", "c"); 
} 

echo a()->a; 
echo a()->b; 
echo a()->c; 
?> 

當然,最後3行不是特別有效,因爲a()被調用3次。將導致那些3線A明智重構被更改爲:

$a = a(); 
echo $a->a; 
echo $a->b; 
echo $a->c; 
1

是這是可能的,當返回變量必須是作爲數組或它應該是長的字符串與任何像分隔符分隔的多個值「,|#」等等。

,如果它被構建爲一個數組,我們可以使用的var_dump使用的功能接收它在PHP

看到下面的代碼

var_dump($array);

+0

返回一個需要解析的字符串會非常難看。 – ThiefMaster 2010-05-10 15:31:51

1

PHP Manual > Returning values

函數不能返回多個值,但通過返回數組可以獲得類似的結果。

<?php 
function small_numbers() 
{ 
    return array (0, 1, 2); 
} 
list ($zero, $one, $two) = small_numbers(); 

不需要這兒上課。