私はパラメータをとる2つの関数を持っています。呼び出されたときの読み込み関数のみ - PHP
私のスクリプトの仕組みは、いくつかのデータを文字列として取得することです。この文字列は2つの形式にすることができ、私には知られておらず、あらかじめ取得することはできません。
私は2つの機能を持っています。それぞれのフォーマットの種類ごとに1つあります。
関数1が最初に呼び出され、文字列がパラメータとして渡されます。次に、この関数内の変数が割り当てられているかどうかを確認します。変数が割り当てられている場合は、文字列形式が認識されたことを意味します。変数が割り当てられていない場合、関数2は同じパラメータで呼び出されます。これはうまくいくはずです。
問題は、私がスクリプトを実行すると、function1が機能していると言うと、関数2の未定義の変数エラーが発生します。これがなぜ呼び出されていないのか理解できません。処理されていない/見た。
呼び出されたときに関数を使用できるようにする方法はありますか?
recurrence_info_day($eventtype);
$recurrence_type = "daily";
if (!$eventstart){
recurrence_info_weekly($eventtype);
$recurrence_type = "weekly";
}
function recurrence_info_day($eventtype){
$s = $eventtype;
preg_match('/^DTSTART;VALUE=DATE:(\d+)\s+DTEND;VALUE=DATE:(\d+)\s+RRULE:FREQ=(\w+);INTERVAL=(\d+);UNTIL=(\d+)/', $s, $recinfod);
$eventstart = $recinfod[1];
$eventend = $recinfod[2];
$eventfrequency = $recinfod[3];
$eventinterval = $recinfod[4];
$eventuntil = $recinfod[5];
$formstartdate = substr($eventstart,4,2)."/".substr($eventstart, 6)."/".substr($eventstart,0,4);
$formenddate = substr($eventuntil,4,2)."/".substr($eventuntil, 6)."/".substr($eventuntil,0,4);
}
function recurrence_info_weekly($eventtype){
$s = $eventtype;
preg_match('/^DTSTART;VALUE=DATE:(\d+)\s+DTEND;VALUE=DATE:(\d+)\sRRULE:FREQ=(\w+);BYDAY=(\d+);UNTIL=(\d+)/', $s, $recinfow);
$eventstart = $recinfow[1];
$eventend = $recinfow[2];
$eventfrequency = $recinfow[3];
$eventdays = $recinfow[4];
$eventuntil = $recinfow[5];
$formstartdate = substr($eventstart,4,2)."/".substr($eventstart, 6)."/".substr($eventstart,0,4);
$formenddate = substr($eventuntil,4,2)."/".substr($eventuntil, 6)."/".substr($eventuntil,0,4);
}
正確なエラーを貼り付けてください。ここに示したものに基づいて、関数2の中にない 'if(!$ eventstart){'では未定義のインデックスが発生していると思います。 – Julien
また、 'preg_match'は値を返します。それが成功したと前に確認してください。 – hakre
'$ eventtype'の文字列の例を挙げてください。少なくとも2つ、1つは最初の(日)、もう1つは2番目のタイプ(週単位)です。 – hakre