これは私のコードであり、この関数を実行すると、次のようになります:Warning: array_Push() expects parameter 1 to be array
ただし、開始する前に$printed
を配列として定義します。
$printed = array();
function dayAdvance ($startDay, $endDay, $weekType){
$newdateform = array(
'title' => date("M d", strtotime($startDay))." to ".date("M d", strtotime($endDay)). $type,
'start' => $startDay."T08:00:00Z",
'end' => $startDay."T16:00:00Z",
'url' => "http://aliahealthcareer.com/calendar/".$_GET['fetching']."/".$startDate);
array_Push($printed, $newdateform);
if ($weekType=="weekend"){
$days="Saturday,Sunday";
}
if ($weekType=="day"){
$days="Monday,Tuesday,Wednesday,Thuresday,Friday";
}
if ($weekType=="evening"){
$days="Monday,Tuesday,Wednesday";
}
$start = $startDate;
while($startDay <= $endDay) {
$startDay = date('Y-m-d', strtotime($startDay. ' + 1 days'));
$dayWeek = date("l", strtotime($startDay));
$pos = strpos($dayWeek, $days);
if ($pos !== false) {
$newdateform = array(
'title' => date("M d", strtotime($start))." to ".date("M d", strtotime($endDate)). $type,
'start' => $startDate."T08:00:00Z",
'end' => $startDate."T16:00:00Z",
'url' => "http://aliahealthcareer.com/calendar/".$_GET['fetching']."/".$startDate);
array_Push($printed, $newdateform);
}
}
}
array_Push()
が呼び出されるスコープでは、_$printed
_は初期化されませんでした。 global
として宣言するか、関数パラメーターに含めます。
_$printed = array();
.
.
.
function dayAdvance ($startDay, $endDay, $weekType){
global $printed;
.
.
.
}
_
OR
_function dayAdvance ($startDay, $endDay, $weekType, $printed = array()) { ... }
_
注:
array_Push()
のより高速な代替手段は、_[]
_を使用して配列に値を追加することです。
_$printed[] = $newdateform;
_
このメソッドは、変数が初期化されていないかどうかを自動的に検出し、データを追加する前に配列に変換します(つまり、エラーはありません)。
更新:
_$printed
_の値を関数の外部で保持する場合は、参照によって渡すか、global
として宣言する必要があります。上記の例は[〜#〜] not [〜#〜]同等です。次の例は、global
を使用するのと同等です(実際、global
を使用するよりも優れた方法です。これにより、コードをより慎重に扱う必要があり、誤ったデータ操作を防ぐことができます)。
_function dayAdvance ($startDay, $endDay, $weekType, &$printed) { ... }
_
global $printed;
を使用するか、関数パラメーターとして$printed
を追加する必要があります。
関数の参照として$printed
パラメーターを渡すこともできます: http://php.net/manual/en/language.references.pass.php
グローバルスコープと変数スコープの詳細: http://php.net/manual/en/language.variables.scope.php
配列に単一の要素を追加する場合は、関数array_Push()
の代わりに$your_array[] = $element_to_be_added;
を使用します。
ドキュメントに記載されているように、配列がnullの場合、これにより新しい配列が作成されます。
注:array_Push()を使用して1つの要素を配列に追加する場合は、$ array [] =を使用することをお勧めします。これにより、関数を呼び出すオーバーヘッドがなくなります。
および:
注:array_Push()は、最初の引数が配列でない場合に警告を発します。これは、新しい配列が作成される$ var []の動作とは異なります。
Is_arrayを検証する必要があります。
例
if (is_array($arNumbers)) {
$cellid = array_Push($arNumbers, 0);
}