我有一个向页面打印信息的函数,它执行此操作是因为它每次检查该值是否存在,如果不存在则输出错误。由于发送到此函数的内容未知,它总是作为字符串到达,我无法改变它。
此函数是否可以解释"array[0]"
和"object.something"
等字符串并返回该值,而不是在$this
E.g。
private array = array("stuff");
$this->printValue("string");
$this->printValue("array[0]");
$this->printValue("object.name"); //Some specified object
public function printValue($key) {
if(isset($this->$key)) {
echo $this->$key;
} else {
die($key.' doesn\'t exist');
}
}
会回应:
string
stuff
thename
答案 0 :(得分:0)
我认为更大的问题是,您是否尝试使用array[0]
作为您尝试引用的内容的索引?我这样假设,否则您可以访问列出的项目中的数据。因此,如果您想使用array[0]
作为索引标识符,那么您可以执行以下操作:
private data_array['array[0]'] = "stuff";
$this->printValue(data_array['array[0]']);
答案 1 :(得分:0)
也许这个例子有帮助:
class Example {
public function __construct() {
$this->foo = array(9, 8, 7);
$this->bar = (object) array('attr1' => 'val1', 'attr2' => 'val2');
$this->baz = 'abcde';
}
public function printValue($key) {
echo eval('return $this->' . $key . ';') . "\n";
}
}
$example = new Example();
$example->printValue('foo[0]'); # prints 9
$example->printValue('bar->attr1'); # prints val1
$example->printValue('baz'); # prints abcde
但是,请注意eval
会带来安全风险,因为它可以执行任何 PHP代码,并且可能会导致致命错误。使用variable variables更安全,但不是一般的。无论如何,必须始终验证这些风险函数的输入。
答案 2 :(得分:0)
我不确定,但我认为你希望$pie = print_r($var,true)
它将字符串作为返回值发送而不是打印出来