Как вернуться из двух циклов for в php - PullRequest
0 голосов
/ 12 января 2012

Я хочу вернуть col1_2, col2_2, col3_2, col4_2, col1_3, col2_3, col3_3, col4_3, col1_4 ... и т. Д., Чтобы я мог использовать его в другой функции.

Так что я сделал так.

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.Если я выведу эхо вместо return $ colname. ",";Это эхо-сигналы col1_2, col2_2, col3_2, col4_2.Но это не может быть использовано в функции create ().

Буду признателен за ваш вклад.Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 12 января 2012

попробуйте что-то вроде

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

Вот живая демонстрация

1 голос
/ 12 января 2012

Если вы хотите использовать имена отдельных столбцов, сгенерированные в функции _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;
        }
       ...
       ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...