This is my code, and when I run this function I get this :Warning: array_push() expects parameter 1 to be array
However I define $printed
as an array prior to starting.
$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);
}
}
}
In the scope in which array_push()
is called, $printed
was never initialized. Either declare it as global
or include it in the function parameters:
$printed = array();
.
.
.
function dayAdvance ($startDay, $endDay, $weekType){
global $printed;
.
.
.
}
OR
function dayAdvance ($startDay, $endDay, $weekType, $printed = array()) { ... }
NOTE:
A faster alternative to array_push()
is to simply append values to your array using []
:
$printed[] = $newdateform;
This method will automatically detect if the variable was never initialized, and convert it to an array prior to appending the data (in other words, no error).
UPDATE:
If you want the value of $printed
to persist outside of the function, you must either pass it by reference or declare it as global
. The above examples are NOT equivalent. The following example would be equivalent to using global
(and is, in fact, a better practice than using global
- it forces you to be more deliberate with your code, preventing accidental data manipulation):
function dayAdvance ($startDay, $endDay, $weekType, &$printed) { ... }
You need to use global $printed;
or to add $printed
as a function parameter.
You may also pass the $printed
parameter as reference in your function: http://php.net/manual/en/language.references.pass.php
More about global and variable scopes: http://php.net/manual/en/language.variables.scope.php
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With