Php 代码点火器中关联数组的URI段
我有以下网址:Php 代码点火器中关联数组的URI段,php,codeigniter,url,associative-array,Php,Codeigniter,Url,Associative Array,我有以下网址: www.example.com/index.php/search/search_data/Doctor:a/Gender:Male/Language:Urdu/ 我想把它转换成关联数组,比如 $data=array( 'Doctor'=> 'a', 'Gender'=> 'Male', 'Language'=> 'Urdu' ); 我已经尝试使用codeIgniter的URI类函数来实现这一点 $this->u
www.example.com/index.php/search/search_data/Doctor:a/Gender:Male/Language:Urdu/
我想把它转换成关联数组,比如
$data=array(
'Doctor'=> 'a',
'Gender'=> 'Male',
'Language'=> 'Urdu'
);
我已经尝试使用codeIgniter的URI类函数来实现这一点
$this->uri->uri_to_assoc(n)
但由于它接受通过'/'分隔的数据,因此我使用'作为分隔符的数据是:'
请帮帮我 我认为没有比手工操作更简单的方法了 首先,检索总段,循环,查看是否包含“:”,然后将其添加到数组中
$segments = $this->uri->segment_array();
$search_array = array();
foreach($segments as $segment) {
if (strpos($segment, ":") !== FALSE) {
$e_array = explode(":", $segment);
$search_array[$e_array[0]] = $e_array[1];
}
}
在某个地方运行该代码片段将获得理想的结果,$search\u array将是一个带有key=>value的关联数组。您可以破解URI.php文件。将第431-439行更改为
if (strpos($seg, ":") !== FALSE) {
list($parameter, $value) = explode(':', $seg);
if ($i % 2) {
$retval[$parameter] = $value;
} else {
$retval[$parameter] = $value;
$lastval = $seg;
}
} else {
if ($i % 2) {
$retval[$lastval] = $seg;
} else {
$retval[$seg] = FALSE;
$lastval = $seg;
}
}
函数的作用是:如果要拆分uri段的值,则解析uri段的值。为什么不编写一个customer helper函数来做你想做的事情呢?这是一个很好的建议,但我要注意,因为它会在你更新CI时破坏代码,或者每次更新CI时你都必须再次这样做