2012-12-03 56 views
0

訪問陣列鍵值我:沒有指定鍵

public $staticRoutes = array(
     'dog-toys' => 'Index', 
     ) ; 

if(array_key_exists($controller, $this->staticRoutes)) 
{ 
    $controller = new $controller ; 
} 

新的$控制器成爲「狗玩具」,這不是我想要的。

我該如何改變我所擁有的$controller = new Index ;

回答

2

的一些變化:

$controller = new ${staticRoutes[$controller]} ; 

我現在不能測試,所以爲了安全起見,你也可以這樣做:

$ctrl = $staticRoutes[$controller]; 
$controller = new $ctrl; 
+0

OP - 這是可行的,因爲你的數組就是所謂的關聯數組。您的'$ controller'變量實際上是引用該數組的鍵,所以您可以像使用索引(編號)數組 - 「array [key]'一樣訪問該值。 – Shauna

1

您將需要實際使用您$staticRoutes數組是這樣的:

$controller_instance = new $this->staticRoutes[$controller]; 

注意我改變了您分配給變量的變量的名稱看在上帝的份上。我還假設試圖實例化此控制器的代碼位於同一類(或繼承類)中,其中$staticRoutes屬性被定義(因此使用$this)。

+0

+1,因爲其他答案更早。 – imperium2335