【问题标题】:The code outputs only the 1st row该代码仅输出第一行
【发布时间】:2019-02-01 16:12:28
【问题描述】:

我想从 $projSDE_1 获取员工姓名,该姓名由 emp ID 组成,用于函数 func_GetEmpName($empID) 下面 for 循环中的每一行。对于下面的代码,它应该显示 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
?>

this the output from the code

need to display like this

removed function

【问题讨论】:

  • 请格式化代码部分,使其可读。
  • 您在 for 循环中覆盖 $empName,因此您也只返回循环后的最后一个值。如果要从该函数中返回所有值,则需要将这些值放入数组中。
  • 如何将 for 循环中的值存储到数组中,并从函数中返回所有值。需要帮助。
  • 或者我应该使用 foreach 循环吗?

标签: php function for-loop


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

【讨论】:

  • 到目前为止我所了解的,我不能简单地使用$projSDE_1_name=func_GetEmpName($projSDE_1);输出它,因为该函数将返回一个数组。这意味着$empNameArray 是一个数组。所以,当我想在查看页面接收$empNameArray 时,我必须使用 foreach 提取它..
  • 感谢@Plum 的帮助,但由于某种原因它无法正常工作。 for循环将检索多个$projSDE_1作为$empID。因此该函数可以接收所有$projSDE_1作为参数来获取每个$projSDE_1的员工姓名?
  • @nhme 哦,对不起,我专注于函数,我忘记了 for 循环。您是想说$projSDE_1 始终是一个数组还是一个简单的值,每个循环都会改变?抱歉,如果不进行测试,我仍然很难提供帮助...
  • 它的值会改变每个循环
  • 是否可以从 for 循环中逐一获取$projSDE_1 以传递给函数?当 for 循环运行时,该函数将检索每个 $projSDE_1 的名称。其他人说返回打破循环的函数,因此它不会读取另一个$projSDE_1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多