PHP:unset()后重新排序数组

时间:2010-09-20 16:49:12

标签: php arrays

涉及2个功能。

  1. 搜索给定字符串的数组项
  2. unset()数组项,如果找不到字符串

  3. $array = array("first", "second", "third", "fourth");
    
    foreach($array as $i=> $string) {  
     if(stristr($string, "e")) {  
        unset($array[$i]);
     }   
    
    }
    

    second是字符为'e'的数组项。如果其unset$array[1]将为空:

    $array[0] = "first"  
    $array[1] = ""  
    $array[2] = "third"  
    $array[3] = "fourth"
    

    我希望$array[1]从数组中删除(例如在array_shift()中),以便third取代secondfourth这个地方third

    $array[0] = "first"    
    $array[1] = "third"  
    $array[2] = "fourth"
    

2 个答案:

答案 0 :(得分:85)

$array = array_values($array);

答案 1 :(得分:4)

我认为我找到的最佳解决方案是:

解决方案1 ​​

如果您只想删除一个元素:

  array_splice($array,1,1); // all keys will be reindexed from 0

其中第二个和第三个参数是偏移(键)和长度(要删除的数量)

解决方案2

最好删除多个密钥:使用array_filter()删除数组中的所有空字符串和falsey值,然后array_splice()重新排序:

array_splice(array_filter($array), 0, 0);