PHP:删除特定元素之前的所有数组元素

cod*_*der 5 php arrays loops for-loop

嗨,我有以下数组:

$days = array(
            1=>"Sunday",
            2=>"Monday",
            3=>"Tuesday",
            4=>"Wednesday",
            5=>"Thursday",
            6=>"Friday",
            7=>"Saturday"
            );
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个循环,自动删除数字 4 之前的所有对象。
我试过这个:

$startIndex = 4;
for($i = 1; $days < $startIndex; $i++)
{
    unset($days[$i]);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

syc*_*yck 6

可以使用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);
Run Code Online (Sandbox Code Playgroud)

返回

Array
(
    [4] => Wednesday
    [5] => Thursday
    [6] => Friday
    [7] => Saturday
)
Run Code Online (Sandbox Code Playgroud)


Mar*_*cin 3

将 $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);
Run Code Online (Sandbox Code Playgroud)