2013-04-06 59 views
0
<?php 
    print_r($optimum); 
    $dataNumRows = count($optimum); 
    ?> 

    <?php for ($i = 0; $i < $dataNumRows; $i++) : ?> 
     <?php echo $cFirstName; ?> 
     <?php echo $cLastName; ?> 
    <?php endfor; ?> 

print_r插在我的视图显示以下内容:Codeigniter/PHP如何正确使用for循环?

Array ([cFirstName] => Array ([0] => Tom [1] => Alexa) [cLastName] => Array ([0] => Jones [1] => Planter)) 

我的模型如下

//Get all the customers currently pending 
//install for the user making the request. 
function getAllCustomersPendingInstall() 
{ 
    $data=array(); 

    //Need to use sessions to display proper 
    //records for each user. Temp set id to user #7 
    $id = 7; 

    //query the db and return all record where SalesRepId == $id 
    $query = $this->db->get_where('customers', array('SalesRepId' => $id)); 

     //check logic, if rows exist RETURN all rows, else 
     //return message that no pending installs is available. 
     if($query->num_rows != 0) { 
      foreach($query->result() as $row) { 
       $data['cFirstName'][] = $row->customerFirstName; 
       $data['cLastName'] [] = $row->customerLastName; 
      } 
     } else { 
      $data = "No pending installs available!"; 
      return $data; 
     } 
//the following var_dump is only showing the last record. 
//need to show all rows (which should be 2) 
//var_dump($data); exit; 
return $data;   
} 

我的控制器是以下

{ 
    $this->load->library('table'); 
    $this->load->model('GetData'); 
    $data['optimum'] = $this->GetData->getAllCustomersPendingInstall(); 
    $this->load->view('welcome_message', $data); 
} 

而我的问题是我如何在我的VIEW中正确使用FOR循环,以便我可以遍历所有返回的行。正如你可以看到print_r正确地返回正确的行 - 但是我无法循环它们。谢谢您的帮助!非常感激!

回答

0

试试这个在您的视图:

<?php for ($i = 0; $i < $dataNumRows; $i++) : ?> 
    <?php echo $optimum['cFirstName'][$i]; ?> 
    <?php echo $optimum['cLastName'][$i]; ?> 
<?php endfor; ?> 
+0

这不会回应任何东西 – fyz 2013-04-06 21:51:36

+0

Ups!数组名称 – Sangar82 2013-04-06 21:53:16

+0

出错了。谢谢! – fyz 2013-04-06 21:55:54

0

我想你要做的是从数据库返回的每一行获得一个关联数组。纠正我,如果我错了。

应该解决您的问题

$data = array(); 
$data_index = 0; 
if($query->num_rows != 0) { 
      foreach($query->result() as $row) { 
       $data[$data_index]['cfirst'] = $row->customerFirstName; 
       $data[$data_index]['clast'] = $row->customerLastName; 
       $data_index++; 
      } 
     } else { 
      $data = "No pending installs available!"; 
      return $data; 
     } 
在你看来

然后(其中$customer$data阵列)

<?php foreach($customer as $c):?> 
<?php echo $c['cfirst'];?> 
<?php endforeach;?> 
+0

这个工作,但什么是data_index,为什么有必要让代码运行? – fyz 2013-04-06 21:54:12

+0

您需要创建一个数组数组。你之前的做法是用2个键创建一个关联数组,然后覆盖模型中每个foreach循环迭代中的值。 – Ethan 2013-04-06 21:57:12

+0

谢谢你的帮助,虽然你的答案正常工作我选择上述答案,因为我觉得它与我的原始代码更好地混合。谢谢! – fyz 2013-04-06 22:05:48