根据函数参数回显数组中的值

时间:2013-01-20 19:56:12

标签: php arrays

如果在类中调用方法,我需要能够在我的一个类中回显私有属性的值。这是一个有点棘手的解释,所以让我说,并希望有人可以为我填补空白:)

     <?php
     class test {
          private $array['teachers']['classes'][23] = "John";


             public function __construct($required_array) {

                 $this->array['teachers']['classes'][23] = "John";
                 $this->array['students'][444] = "Mary";
                 $this->echo_array($required_array);

             }
             public function echo_array($array) {

                     // Echo the value from the private $this->array;
                     // remembering that the array I pass can have either 
                     // 1 - 1000 possible array values which needs to be 
                     // appended to the search. 

             }
     }

     // Getting the teacher:     
     $test = new test(array('teachers','classes',23));

     // Getting the student:     
     $test = new test(array('students',444));

?>

这可能吗?

2 个答案:

答案 0 :(得分:3)

$tmp = $this->array;
foreach ($array as $key) {
    $tmp = $tmp[$key];
}
// $tmp === 'John'
return $tmp; // never echo values but only return them

答案 1 :(得分:0)

获得价值的另一种方法;

class Foo {
    private $error = false,
            $stack = array(
        'teachers' => array(
            'classes' => array(
                23 => 'John',
                24 => 'Jack',
            )
        )
    );

    public function getValue() {
        $query  = func_get_args();
        $stack  = $this->stack;
        $result = null;
        foreach ($query as $i) {
            if (!isset($stack[$i])) {
                $result = null;
                break;
            }
            $stack  = $stack[$i];
            $result = $stack;
        }

        if (null !== $result) {
            return $result;
        }
        // Optional
        // trigger_error("$teacher -> $class -> $number not found `test` class", E_USER_NOTICE);
        // or
        $this->error = true;
    }

    public function isError() {
        return $this->error;
    }
}

$foo = new Foo();
$val = $foo->getValue('teachers', 'classes', 24); // Jack
// $val = $foo->getValue('teachers', 'classes'); // array: John, Jack
// $val = $foo->getValue('teachers', 'classes', 25); // error
if (!$foo->isError()) {
    print_r($val);
} else {
    print 'Value not found!';
}