PHP将字符串转换为数组或对象(如果它表示数组或对象)
我有一个将信息打印到页面的函数,它这样做是因为它每次都检查该值是否存在,如果不存在则输出一个错误。由于发送到此函数的内容的未知性质,它总是以字符串的形式到达,因此我无法更改此内容 此函数是否可以解释字符串,例如PHP将字符串转换为数组或对象(如果它表示数组或对象),php,arrays,string,Php,Arrays,String,我有一个将信息打印到页面的函数,它这样做是因为它每次都检查该值是否存在,如果不存在则输出一个错误。由于发送到此函数的内容的未知性质,它总是以字符串的形式到达,因此我无法更改此内容 此函数是否可以解释字符串,例如“array[0]”和“object.something”,并返回该值,而不是在$this中查找作为索引的值 例如 我将回应: string stuff thename 我认为更大的问题是,您是否试图使用array[0]作为您试图引用的内容的索引?我假设是这样,否则您可以访问列出的项目中
“array[0]”
和“object.something”
,并返回该值,而不是在$this
中查找作为索引的值
例如
我将回应:
string
stuff
thename
我认为更大的问题是,您是否试图使用
array[0]
作为您试图引用的内容的索引?我假设是这样,否则您可以访问列出的项目中的数据。因此,如果希望使用数组[0]
作为索引标识符,则可以执行以下操作:
private data_array['array[0]'] = "stuff";
$this->printValue(data_array['array[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
但是,要考虑到这会带来安全风险,因为它可以执行任何PHP代码,并可能导致致命错误。使用更安全,尽管没有那么普遍。无论如何,这些风险函数的输入必须始终进行验证。我不确定,但我认为您需要
$pie=print\r($var,true)
它将字符串作为返回值发送,而不是打印出来我不想使用数组[0]作为索引,数组是索引,我猜[0]是子索引。它目前不起作用,isset似乎失败了。非常感谢您抽出时间。是的,不幸的是,我认为您无法访问原始对象的数据,因为它不再是要发送的对象。是否要将返回的字符串更改为仅传递对象?
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