2013-07-16 19 views
2

有一個數組:如何在設置數組索引後使數組變得緊湊?

$ret = array(); 
... query execution 
$ret['cnt'] = $this->db->num_rows(); // total number of database records 
$i = 0; 
while ($this->db->next_record()) { // fetching database records 
    $ret[$i]["user_id"] = $this->db->f('user_id') ; 
    $ret[$i]["user_login"] = stripslashes($this->db->f('user_login')); 
    $i++; 
} 

現在我想從這個數組刪除其「USER_ID」等於特定值的元素:

if ($ret['cnt'] > 0) { 
       for ($i=0; $i<$ret['cnt']; $i++) { 
        if ($ret[$i]['user_id'] == $_SESSION[CODE_USER]) { 
         unset($ret[$i]); 
         break; 
        } 
       } 
      } 

打印我注意到陣列之後,元素0不在數組中,這是我所期望的。現在唯一的問題是如何重新排列數組元素,使其再次緊湊而又沒有任何孔,因爲元素0不存在?

回答

1

array_values可能是復位鍵的最簡單方式。

+0

或'sort',如果順序無關 –

1
if ($ret['cnt'] > 0) { 
       for ($i=0; $i<$ret['cnt']; $i++) { 
        if ($ret[$i]['user_id'] == $_SESSION[CODE_USER]) { 
         $ret = array_slice($ret,$i,1); 
         break; 
        } 
       } 
      } 

array_slice也將剝離數組的一部分並根據需要重新索引。