我在 codeigniter 控制器中有一个方法,有时通过 url 调用,有时从控制器的另一个方法内部调用。当我在内部调用它时,我传递了一个参数数组。方法的简化版:
(在控制器内)
function get_details($args='') {
if (isset($args['first_name']))
{
$first_name = $args['first_name'];
}
else
{
$first_name = $this->uri->segment(3);
}
... do some other stuff ...
}
该方法被称为:
<domain>/<controller>/get_details/abcd/efgh
或来自控制器的另一个功能:
$this->get_details(array('first_name'=>'abcd', 'last_name'=>'efgh'));
我期待当通过 url 调用该方法时, isset($args['first_name']) 将是错误的,但是似乎以这种方式调用的参数就在那里。我尝试打印一些东西,这就是我得到的:
print_r($args) ----> abcd
echo($args['first_name']) ----> a
echo($args['whatever_index_I_use']) ----> a
似乎 url 的第三个参数正在传递给方法(通过 codeigniter?),但无法弄清楚为什么似乎设置了数组索引,我只能认为 php 正在将字符串转换为 int ,所以$args['whatever_index_I_use'], becomes $args[0]
??
不知道这是一个codeigniter的事情还是我错过了php的微妙之处。
非常感谢任何可以解释发生了什么的人。
谢谢。