2010-05-10 22 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(); 

不需要这儿上课。