2011-03-25 89 views
0

我有這樣一個路徑:我可以根據url路徑生成一個數組嗎?

/博客/ 2 /後/ 45 /評論/ 24

我能有一個數組要看什麼我有網址,如:

$arr = array('blog'=>'2','post'=>'45','comment'=>'24'); 

但它應該取決於通過的變量:

/blog/2 should produce $arr = array('blog'=>'2'); 

這是可以創建動態數組嗎?

+0

你嘗試爆炸,然後循環結果數組? – 2011-03-25 14:06:50

回答

2

你可以嘗試這樣的事:

function path2hash($path) { 
    // $path contains whatever you want to split 
    $chunks = explode('/', $path); 

    $result = array(); 
    for ($i = 0; $i < sizeof($chunks) - 1; $i+=2) 
    $result[$chunks[$i]] = $chunks[$i+1]; 

    return $result; 
} 

然後,您可以使用parse_url解壓路徑,這個功能把它變成所需的哈希值。

+0

好的工作。用法:)謝謝 – flakerimi 2011-03-25 14:12:37

0

首先使用$_SERVER['REQUEST_URI']來查找當前路徑。

現在,你可以使用爆炸等字符串函數生成數組...

如果你需要一個工作示例,虐待嘗試發佈一個。

編輯:

$path=explode('/',$path); 

$arr=array(
$path[0]=>$path[1], 
$path[1]=>$path[2]); 

或者不知道它有多長......

$arr=array(); 
for ($i=0; $i+1<count($path);i+=2) 
$arr[$path[$i]]=$path[$i+1]; 
+0

我有路徑,我只需要第一個參數是關鍵,第二個值。 – flakerimi 2011-03-25 14:04:37

+0

好吧,你可以使用爆炸和比: $ arr = array( – fingerman 2011-03-25 14:07:54

+0

你不能在評論中發佈代碼...我編輯了我的答案 – fingerman 2011-03-25 14:13:17

0

下面是一個試圖解決該問題的簡單示例。這會將參數放入「參數」數組中,並將包含數組中的每個鍵/值的組合。如果有奇數個參數,最後一個元素將被忽略。

這使用array_shift()從數組中移除第一個元素,然後將其用作參數數組中的鍵。然後我們從數組中移除下一個元素,然後再次使用array_shift()。如果我們在這裏找到實際值(當數組爲空時,array_shift返回NULL),我們在arguments數組中創建一個條目。

$path = '/blog/2/post/45/comment/24'; 
$elements = explode('/', $path); 

// remove first, empty element 
array_shift($elements); 
$arguments = array(); 

while($key = array_shift($elements)) 
{ 
    $value = array_shift($elements); 

    if ($value !== NULL) 
    { 
     $arguments[$key] = $value;  
    } 
} 
相關問題