[英]PHP Convert String to an array or object if it represents one
我有一個將信息打印到頁面上的函數,它這樣做是因為它每次都會檢查該值是否存在,如果不存在則輸出錯誤。 由於發送到此函數的內容的未知性質,它始終以字符串形式到達,因此我無法更改它。
此函數是否可以解釋諸如"array[0]"
和"object.something"
字符串並返回該值,而不是在$this
中查找該值作為索引
例如
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
即時通訊不確定,但我想你想$pie = print_r($var,true)
它將字符串作為返回值發送而不打印出來
我認為更大的問題是,您是否要使用array[0]
作為要引用的內容的索引? 我假設是這樣,否則您可以從列出的那些項目中訪問數據。 因此,如果您想使用array[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
但是,請考慮到eval
帶來安全風險,因為它可以執行任何 PHP代碼,並且可能導致致命錯誤。 使用變量變量更安全,盡管不那么普遍。 無論如何,必須始終驗證這些風險功能的輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.