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']) が false になることを期待していましたが、この方法で呼び出されたように見えます引数がそこにあります。私はいくつかのものを印刷しようとしましたが、これは私が得たものです:
print_r($args) ----> abcd
echo($args['first_name']) ----> a
echo($args['whatever_index_I_use']) ----> a
URL の 3 番目のパラメーターが (codeigniter によって) メソッドに渡されているようですが、配列インデックスが設定されているように見える理由がわかりません。php が文字列を int に変換していると考えられます。 、だから$args['whatever_index_I_use'], becomes $args[0]
??
これがコードイグナイターの問題なのか、微妙なphpが欠けているのかはわかりません。
何が起こっているのか説明できる人に感謝します。
ありがとう。