簡體   English   中英

PHP將String轉換為數組或對象(如果它表示一個)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM