Reputation: 299
Hi I've got the following array:
$days = array(
1=>"Sunday",
2=>"Monday",
3=>"Tuesday",
4=>"Wednesday",
5=>"Thursday",
6=>"Friday",
7=>"Saturday"
);
Now I want to make a loop that automatically removes all objects before number 4.
I tried this:
$startIndex = 4;
for($i = 1; $days < $startIndex; $i++)
{
unset($days[$i]);
}
But it does not work.
Upvotes: 6
Views: 1924
Reputation: 3029
A shorter solution may be given using array_slice():
$days = array(
1=>"Sunday",
2=>"Monday",
3=>"Tuesday",
4=>"Wednesday",
5=>"Thursday",
6=>"Friday",
7=>"Saturday"
);
$startIndex = 4;
$days = array_slice($days, $startIndex-1, NULL, TRUE);
print_r($days);
returns
Array
(
[4] => Wednesday
[5] => Thursday
[6] => Friday
[7] => Saturday
)
Upvotes: 7
Reputation: 1521
Your array
$days = array
(
1=>"Sunday",
2=>"Monday",
3=>"Tuesday",
4=>"Wednesday",
5=>"Thursday",
6=>"Friday",
7=>"Saturday"
);
Loop to remove all element before a specified index.
# Number to stop the unset.
$split_number =4;
# Loop through array
for($a=0;$a<sizeof($days);$a++)
{
if($a < $split_number)
# Unset element if condition is true
unset($days[$a]);
}
print_r($days);
Result
Array
(
[4] => Wednesday
[5] => Thursday
[6] => Friday
[7] => Saturday
)
If you wish the indexes to start from 0 again, you can use the array_values
Upvotes: 0
Reputation: 1494
Change $days to $i as $i is your index value.
$days = array(
1=>"Sunday",
2=>"Monday",
3=>"Tuesday",
4=>"Wednesday",
5=>"Thursday",
6=>"Friday",
7=>"Saturday"
);
$startIndex = 4;
for($i = 1; $i < $startIndex; $i++)
{
unset($days[$i]);
}
print_r($days);
Upvotes: 3