Код выводит только 1-й ряд - PullRequest
       25

Код выводит только 1-й ряд

0 голосов
/ 27 августа 2018

Я хочу получить имя сотрудника из $projSDE_1, которое состоит из emp ID для каждой строки в цикле for ниже из функции func_GetEmpName($empID). Для приведенного ниже кода должно отображаться 10 строк с $projSDE_1's name, но проблема заключается в том, чтокод выводит только 1-ую строку. Почему остальные 9 строк не могут быть отображены? Я уже застрял с этой проблемой на 1 неделю. Если я уберу функцию, она отобразит 10 строк. Все помогают.

<?php
for($i=0; $i<db_rowcount();$i++){
  //loop through every result set
  $projID=db_get($i,0);
  $projNo=db_get($i,1);
  $projDesc=db_get($i,2);
  $projSDE_1=db_get($i,8);//1st Services Development Engineer

  $projSDE_1_name = func_GetEmpName($projSDE_1);//get name from function


}//endfor

  function func_GetEmpName($empID) {
  $sqlEmp="select EmpID,LastName2_c from empbasic WHERE EmpID= '".$empID."'";
  db_select($sqlEmp);
  $rowcount=db_rowcount();
  if(db_rowcount()>0){
    for($f=0;$f<count($empID);$f++){
      $empID=db_get($f,0);
      $empName=db_get($f,1);
    }
  }
  return $empName;
} // function
?>

это вывод из кода

нужно отображать вот так

удаленная функция

1 Ответ

0 голосов
/ 27 августа 2018

Как сказал CBroe , вы перезаписываете $empName в каждом цикле.Чтобы избежать этого, поместите переменную в массив.

<?php

$projSDE_1_IDs = [];

for($i=0; $i<db_rowcount();$i++){
    //loop through every result set
    $projID=db_get($i,0);
    $projNo=db_get($i,1);    
    $projDesc=db_get($i,2);
    $projSDE_1=db_get($i,8);//1st Services Development Engineer

    array_push($projSDE_1_IDs, $projSDE_1) // Store all `$projSDE_1` in an array

}//endfor

$projSDE_1_names = func_GetEmpName($projSDE_1_IDs); // Pass the IDs' array to the function

function func_GetEmpName($empIDs) {

    $names = [];

    foreach($empIDs as $empId){

        $sqlEmp="select EmpID,LastName2_c from empbasic WHERE EmpID= '".$empID."'";

        db_select($sqlEmp);

        $rowcount=db_rowcount();

        if(db_rowcount()>0){

            for($f=0;$f<count($empID);$f++){
                $empID=db_get($f,0);
                $empName=db_get($f,1);

                array_push($names, $empName)
            }
        }

    }

    return $names;

} // function

var_dump($projSDE_1_names) // Display the array to see if you get all the correct data 

Не совсем уверен для части foreach в функции, но если вы измените мелочь самостоятельно, если она не работает, вы сможете делать то, что выхочу.Я думаю, что логика здесь.

...