2017-06-14 21 views
-3

我有一個PHP類,如下所示:PHP設置和獲取多維數組值

Class ArrayStore{ 

static $storage = array(); 

public static set($key, $value){ 
    //set value 
} 

public static get($key){ 
    //return value 
} 

} 

我想怎麼使用:

ArrayStore::set('["id"]["name"]["last"]', 'php'); 
ArrayStore::get('["id"]["name"]["last"]'); //should return php 

ArrayStore::set('["multi"]["array"]', 'works'); 
ArrayStore::get('["multi"]["array"]'); //should return works 

讓我知道如果有一個更好的方法設置並獲得一個有理由的多維數組。

編輯: 我想是這樣的:

<?php 
$x = array(1=>'a'); 
$op="\$x"."[1]"; 
$value=eval("return ($op);"); 

echo $value;//prints a. 
?> 
+0

您發佈的代碼不是OOP,但過程編程(全局變量)僞裝下。 PHP已經提供了作爲數組工作的['ArrayObject'](http://php.net/manual/en/class.arrayobject.php)類。用它! – axiac

回答

0

從你的邏輯,你可以這樣做:

<?php 
class ArrayStore{ 

static $storage = array(); 

public static function set($key, $value){ 
    self::$storage[$key] = $value; 
} 

public static function get($key){ 
    return self::$storage[$key]; 
} 

} 
ArrayStore::set('["id"]["name"]["last"]', 'php'); 
echo ArrayStore::get('["id"]["name"]["last"]'); //should return php 
echo "<br>"; 
ArrayStore::set('["multi"]["array"]', 'works'); 
echo ArrayStore::get('["multi"]["array"]'); //should return works 
+0

它返回預期的輸出。然而,它不存儲數據像 'array('id'=> array('name'=> array('last'=>'php')))' –