Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将字符串转换为数组或对象(如果它表示数组或对象)_Php_Arrays_String - Fatal编程技术网

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