2011-11-21 110 views
0

所以我在我的盟友陣列上運行了一個print_r,結果出現了這個問題。現在這裏的問題是我有一個問題,試圖找出我的foreach應該看起來如何,因爲在這個數組裏面不會有值。我希望它能做的事情是,如果有任何沒有值的地方,那麼甚至不會將它包含在數組中,這樣它只能回顯索引。有什麼建議麼?Foreach循環沒有全部數據

Array 
(
    [0] => Ryu Satoshi 
    [1] => Oriel 
    [2] => \"The Ladies Man\" Luscious Landon 
    [3] => 
    [4] => 
) 
function getCharacterAllies($character_id) 
{ 
    $testArray = array(); 
    $this->db->select('ally1_id, ally2_id, ally3_id, ally4_id, ally5_id'); 
    $this->db->from('characters_bio_allies'); 
    $this->db->where('characters_id', $character_id); 
    $query = $this->db->get(); 
    if ($query->num_rows() > 0) 
    { 
     $row = $query->row(); 
     $ids = array(
     $row->ally1_id, 
     $row->ally2_id, 
     $row->ally3_id, 
     $row->ally4_id, 
     $row->ally5_id 
     ); 

     foreach ($ids as $id) 
     { 
      if($id !== '0') 
      { 
       $this->db->select('character_name'); 
       $this->db->from('characters'); 
       $this->db->where('id', $id); 
       $query = $this->db->get(); 
       $row = $query->row(); 
       $testArray[] = $row->character_name; 
      } 
      else 
      { 
       $testArray[] = ""; 
      } 
     } 
    } 
    else 
    { 
     for ($x = 0; $x < 5; $x++) 
     { 
      $testArray[] = ""; 
     } 
    } 
    return $testArray; 
} 

foreach ($alliesArray as $row) 
{ 
    echo "<li>".$row['character_name']."</li>"; 
} 
+0

我更新我的職務。 –

+0

做一個'if(count($ alliesArray)> 0)'並把你的foreach放在這裏if? –

+0

此外,你不應該有一個循環內查詢 – Mikhail

回答

1

試試這個:

foreach ($alliesArray as $key => $row) { 
    if (!empty($alliesArray[$key])) { 
    echo '<li>' . $row['character_name'] . '</li>'; 
    } 
} 
+0

我能夠得到它顯示,但是,它只顯示第一個實際的計算機字符,如「R」或「/」或「O」 –