我有一条路:
/博客/ 2 /后/ 45 /评论/ 24
我可以拥有一个数组取决于我在url上的内容,例如:
$arr = array('blog'=>'2','post'=>'45','comment'=>'24');
但它应该取决于传递的变量:
/blog/2 should produce $arr = array('blog'=>'2');
这可以创建动态数组吗?
答案 0 :(得分: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
来提取路径,并使用此函数将其转换为所需的哈希值。
答案 1 :(得分:0)
首先使用$_SERVER['REQUEST_URI']
查找当前路径。
现在,您可以使用explode和其他字符串函数来生成数组...
如果你需要一个有效的例子,我会试着发一个。
编辑:
$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];
答案 2 :(得分:0)
这是一个试图解决问题的简单示例。这将把参数放在“arguments”数组中,并将包含数组中键/值的每个组合。如果有一个奇数个参数,最后一个元素将被忽略。
这使用array_shift()从数组中删除第一个元素,然后将其用作arguments数组中的键。然后我们从数组中删除下一个元素,然后再使用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;
}
}
答案 3 :(得分:-2)
本身并非真正的答案,但您可能会发现http://www.php.net/manual/en/function.parse-url.php有用。