php动态关联数组显示来自mysql数据库的错误结果

问题描述

我有两个表“feetypes”和“Feeddetails”如下

MysqL> select * from feetypes;
+------------+----------------+---------------+-----------+----------+
| iFeeTypeId | vFeeColumnName | vColumnHeader | iPriority | edisplay |
+------------+----------------+---------------+-----------+----------+
|          1 | iBatchYear     | Year          |         5 | 0        |
|          2 | dTutionFee     | Tution Fee    |         4 | 0        |
|          3 | dCautionMoney  | Caution Money |         1 | 0        |
|          4 | dOtherFee      | Other Fee     |         3 | 0        |
|          5 | dMyNewFee      | My New Fee    |         2 | 0        |
+------------+----------------+---------------+-----------+----------+
5 rows in set (0.00 sec)


MysqL> select * from Feedetails;
+---------------+------------+-----------+------------+------------+---------------+-----------+-----------+----------+---------------------+---------------------+
| iFeedetailsId | iSiteConId | iCourseId | iBatchYear | dTutionFee | dCautionMoney | dOtherFee | dMyNewFee | eDeleted | dCreatedDate        | dUpdatedDate        |
+---------------+------------+-----------+------------+------------+---------------+-----------+-----------+----------+---------------------+---------------------+
|             1 |          1 |         1 |       2021 |    1000.00 |       2000.00 |   3000.00 |      0.00 | 0        | 2021-02-18 03:49:18 | 2021-02-18 03:49:18 |
|             2 |          1 |         1 |       2022 |    2000.00 |       2000.00 |   2000.00 |   2000.00 | 0        | 2021-02-18 03:49:18 | 2021-02-18 03:49:18 |
+---------------+------------+-----------+------------+------------+---------------+-----------+-----------+----------+---------------------+---------------------+
2 rows in set (0.00 sec)

在这里,我正在检查带有“Feedetails”表属性(如 dTutionFee、dCautionMoney、dOtherFee、dMyNewFee 等)的“feetypes”表 vFeeColumnName 属性,如果找到匹配项,则应该进行处理,最后我想创建一个数组,但是我得到错误的数组结果...

我想要这样的结果:

array(size=2)
  0 =>
    array(size=5)
        'dCautionMoney' => string '2000.00' (length=7)
        'dMyNewFee' => string '0.00' (length=4)
        'dOtherFee' => string '3000.00' (length=7)
        'dTutionFee' => string '1000.00' (length=7)
        'iBatchYear' => string '2021' (length=4)
 1 => 
    array(size=5)
        'dCautionMoney' => string '2000.00' (length=7)
        'dMyNewFee' => string '2000.00' (length=7)
        'dOtherFee' => string '2000.00' (length=7)
        'dTutionFee' => string '2000.00' (length=7)
        'iBatchYear' => string '2022' (length=4)

但我得到这样的结果:

array (size=2)
  0 => 
    array (size=6)
      0 => 
        array (size=0)
          empty
      'dCautionMoney' => string '2000.00' (length=7)
      'dMyNewFee' => string '0.00' (length=4)
      'dOtherFee' => string '3000.00' (length=7)
      'dTutionFee' => string '1000.00' (length=7)
      'iBatchYear' => string '2021' (length=4)
      
  1 => 
    array (size=7)
      0 => 
        array (size=0)
          empty
      'dCautionMoney' => string '2000.00' (length=7)
      'dMyNewFee' => string '2000.00' (length=7)
      'dOtherFee' => string '2000.00' (length=7)
      'dTutionFee' => string '2000.00' (length=7)
      'iBatchYear' => string '2022' (length=4)
      
      1 => 
        array (size=0)
          empty

我的代码是:


//get varIoUs fee types start
$queryFeeTypes = "SELECT * FROM feetypes WHERE edisplay = '0' ORDER BY iPriority ";
$exeFeeTypes =  $pdo->query($queryFeeTypes);
$resultFeeTypes = $exeFeeTypes->fetchAll(PDO::FETCH_ASSOC);
//get varIoUs fee types end


//get varIoUs column  name start
$queryDesFeedetails = "DESCRIBE Feedetails";
$exeDescFeedetails = $pdo->query($queryDesFeedetails);
$resultDescFeedetails = $exeDescFeedetails->fetchAll(PDO::FETCH_ASSOC);
//get varIoUs column  name end


//get fee details start
$queryFeedetails = "SELECT * FROM  Feedetails WHERE eDeleted = '0'";
$exeFeedetails =  $pdo->query($queryFeedetails);
$resultFeedetails = $exeFeedetails->fetchAll(PDO::FETCH_ASSOC);
//get fee details end 

$data = array();

foreach($resultFeedetails as $newData) {
    $newArrayData[] = array();
    foreach($resultFeeTypes as $row){
        foreach($resultDescFeedetails as $rowNew){
            $header =  $rowNew['Field'];
            if($row['vFeeColumnName'] == $rowNew['Field']){
                $newArrayData = array_push_assoc($newArrayData,$header,$newData[$header]);
            }
        }
    }    
array_push($data,$newArrayData);

}

function array_push_assoc($array,$key,$value){
    $array[$key] = $value;
    return $array;
 }

var_dump($data);
?>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)