2011-11-21 31 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” –