该代码仅输出第一行

时间:2018-08-27 06:52:11

标签: php function for-loop

我想从$projSDE_1获取由emp ID函数下面的for循环中每一行的func_GetEmpName($empID)组成的雇员姓名。对于下面的代码,它应该显示10行,其中{ {1}},但问题是代码仅输出第一行。为什么其他9行无法显示?我已经被这个问题困扰了1周。如果我删除该功能,它将显示10行 所有帮助表示赞赏。

$projSDE_1's name

this the output from the code

need to display like this

removed function

1 个答案:

答案 0 :(得分:1)

正如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部分,但是如果无法正常工作,则可以自行修改一些小东西,那么您应该可以做自己想做的事情。我认为逻辑就在这里。