首页 > 解决方案 > 该代码仅输出第一行

问题描述

我想从中获取员工姓名,$projSDE_1其中包含emp ID函数下面 for 循环中的每一行。对于下面func_GetEmpName($empID)的代码,它应该显示 10 行,$projSDE_1's name但问题是代码只输出第一行。为什么其他 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
?>

这是代码的输出

需要这样显示

删除功能

标签: phpfunctionfor-loop

解决方案


正如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 部分不太确定,但是如果它不起作用,你自己修改一些小东西,你应该能够做你想做的事。我认为逻辑就在这里。


推荐阅读