我有兩個函數,它們需要一個參數。只有在調用時才能讀取函數 - PHP
我的腳本的工作方式是它將一些數據作爲字符串檢索。這個字符串可以是兩種格式,這對我來說是未知的,並且不能事先獲得。
所以我有2個功能,每種類型的格式。
首先調用函數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);
}
請貼上您的確切錯誤。根據這裏顯示的內容,我會認爲未定義的索引出現在'if(!$ eventstart){',它不在函數2中。' – Julien 2012-03-06 15:43:14
另外,'preg_match'返回一個值。檢查它,然後假定它是成功的。 – hakre 2012-03-06 15:53:34
請給出'$ eventtype'的示例字符串。至少有兩個,一個匹配第一個(日),一個匹配第二個類型(每週)。 – hakre 2012-03-06 15:56:26