2012-01-12 62 views
0

我想回到col1_2,col2_2,col3_2,col4_2,col1_3,col2_3,col3_3,col4_3,col1_4 ...等返回,这样我可以在其他函数中使用它。如何从两个for循环在PHP

所以我做了这个样子。

function _fields($keynum){ 
    for ($r=2; $r<$keynum; $r++){ 
     for($c=1; $c<5; $c++){ 
      $colname="col".$c."_".$r; 
      return $colname.","; 
     } 
    } 
} 

function create(){ 
    if ($this->input->post('keynum')){ 
     $keynum=$this->input->post('keynum'); 
     $output = $this->_fields($keynum); 
     $output=explode(",", $output); 
     $data['output']=$output; 
     ... 
     ... 

但函数_fields()只返回col1_2。 如果我回显出来而不是返回$ colname。“,”;它回显出col1_2,col2_2,col3_2,col4_2。但是这不能在函数create()中使用。

我会欣赏你的输入。 在此先感谢。

回答

2

尝试像

function _fields($keynum){ 
    $colname = ''; 
    for ($r=2; $r<$keynum; $r++){ 
     for($c=1; $c<5; $c++){ 
      $colname .= "col".$c."_".$r; 
     } 
    } 
    return $colname; 
} 

Here's a live demo

+1

但是他怎么能爆炸所有的列没有,是在列名后面加 – Dau 2012-01-12 13:04:23

1

如果你想作为_fields函数生成使用单独的列名,你可以使用一个数组,而不是字符串:

function _fields($keynum){ 
    $colname = array(); 
    for ($r=2; $r<$keynum; $r++){ 
     for($c=1; $c<5; $c++){ 
      $colname[] = "col".$c."_".$r; 
     } 
    } 
    return $colname; 
} 

现在你不必explode任何东西在你的create功能:

function create(){ 
    if ($this->input->post('keynum')){ 
     $keynum=$this->input->post('keynum'); 
     $output = $this->_fields($keynum); 
     foreach ($output as $col){ 
      echo $col; 
     } 
     ... 
     ... 
+0

恰恰我的答案,但是你输入的更快 – 2012-01-12 13:05:40