【问题标题】:PHP: Delete all array elements before a specific onePHP:删除特定元素之前的所有数组元素
【发布时间】: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 );

标签: php arrays loops for-loop


【解决方案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

      【讨论】:

        猜你喜欢
        • 2011-03-09
        • 1970-01-01
        • 2020-05-10
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-11
        相关资源
        最近更新 更多