私はcodeigniterコントローラにメソッドを持っています。このメソッドは、urlで時々呼び出され、コントローラの別のメソッドから内部的に呼び出されることもあります。私はそれを内部的に呼び出すと、一連の引数を渡します。方法の簡略化されたバージョン:引数がcodeigniterメソッドに渡される方法
<domain>/<controller>/get_details/abcd/efgh
又は制御装置の他の機能から:
(コントローラ内の)メソッドが呼び出されるか
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 ...
}
として
$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の繊細が欠けている場合わかりません。
多くは、何が起こっているかを説明することができ、誰に感謝しています。
ありがとうございました。
配列を渡す必要はありますか? '$ this-> get_details( 'abcd'、 'efgh');'メソッドを呼び出して値を渡すだけではありません。呼び出しが行われたときとまったく同じ方法でアクセスできますブラウザによって。 – cchana
イセットセットを[is_array](http://php.net/manual/en/function.is-array.php)に変更するとどうなりますか? –
is_array($ args)はfalseを返します。これは良いことです。私はテストのために使用できます。ありがとうございます。しかし、私はまだコードの残りの部分で何が起こっているのか理解したいのですが、PHPが文字列をどのように扱うか(引数とインデックスについて)何か不足していますか? – Leon