PHP:删除特定元素之前的所有数组元素
Posted
技术标签:
【中文标题】PHP:删除特定元素之前的所有数组元素【英文标题】:PHP: Delete all array elements before a specific one 【发布时间】:2016-02-12 08:36:44 【问题描述】:您好,我有以下数组:
$days = array(
1=>"Sunday",
2=>"Monday",
3=>"Tuesday",
4=>"Wednesday",
5=>"Thursday",
6=>"Friday",
7=>"Saturday"
);
现在我想创建一个循环,自动删除数字 4 之前的所有对象。 我试过这个:
$startIndex = 4;
for($i = 1; $days < $startIndex; $i++)
unset($days[$i]);
但它不起作用。
【问题讨论】:
你看过array_splice
吗?即:array_splice( $days,0, 4 );
【参考方案1】:
可以使用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);
返回
Array
(
[4] => Wednesday
[5] => Thursday
[6] => Friday
[7] => Saturday
)
【讨论】:
【参考方案2】:将 $days 更改为 $i,因为 $i 是您的索引值。
$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);
【讨论】:
【参考方案3】:你的数组
$days = array
(
1=>"Sunday",
2=>"Monday",
3=>"Tuesday",
4=>"Wednesday",
5=>"Thursday",
6=>"Friday",
7=>"Saturday"
);
循环删除指定索引之前的所有元素。
# 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);
结果
Array
(
[4] => Wednesday
[5] => Thursday
[6] => Friday
[7] => Saturday
)
如果您希望索引再次从 0 开始,您可以使用 array_values
【讨论】:
以上是关于PHP:删除特定元素之前的所有数组元素的主要内容,如果未能解决你的问题,请参考以下文章