1

我有三个数组。一种包含来自存储在 $attributenames 中的用户的给定标题信息。第二个将来自用户的数据存储在 $anesdata 中。(所以前两个是相关的)第三个是字典,这样我就可以使用存储在 $medicalInstanceDictionary 中的索引来获取我想要的信息。

这是第一个:

Array
(
    [0] => PATIENT MRN
    [1] => PATIENT LAST NAME
    [2] => PATIENT FIRST NAME
    [3] => PATIENT MIDDLE NAME
    [4] => PATIENT SSN
    [5] => PATIENT SEX
    [6] => INVOICE
    [7] => TRANSACTION
    [8] => DATE OF PROCEDURE
    [9] => POSTING DATE
    [10] => LOCATION
    [11] => CHARGE AMT
    [12] => PROVIDER
    [13] => FSC1
    [14] => FSC2
    [15] => PATIENT DOB
    [16] => ATTENDING SURGEON
    [17] => ATTENDING SURGEON
    [18] => CPT CODES
    [19] => ASA CLASSFICATION
    [20] => ANESTHESIA CRNA
    [21] => ANESTHESIA RESIDENT
    [22] => SURGERY START TIME
    [23] => SURGERY END TIME
    [24] => SVC UNIT
    [25] => FACILITY NAME
    [26] => BILLING NUMBER
    [27] => BILLING AREA NAME
    [28] => PROCEDURE MODIFIER1
    [29] => PROCEDURE MODIFIER2
    [30] => PROCEDURE MODIFIER3
    [31] => PRIMARY DX
    [32] => SECONDARY DX

)

第二个数组是一个二维数组,但每行相当于一个病人。所以第一个病人看起来像这样(放入 x 而不是实际的病人数据):

[0] => Array
    (
        [0] => xxxx
        [1] => xxxx
        [2] => xxxx
        [3] => xxxx
        [4] => xxxxx
        [5] => xxxx
        [6] => xxxx
        [7] => xxx
        [8] => xxxxx
        [9] => xxxx
        [10] => xxxx
        [11] => xxxxx
        [12] => xxxx
        [13] => xxxxx
        [14] => xxxx
        [15] => xxxx
        [16] => xxxxxxx
        [17] => xxxxx
        [18] => xxxxx
        [19] => xxxx
        [20] => 
        [21] => xxxxx
        [22] => xxxxx
        [23] => xxxxx
        [24] => xxxxx
        [25] => xxxx
        [26] => xxxxx
        [27] => xxxx
        [28] => xxxxxxxx
        [29] => xxxx
        [30] => 
        [31] => xxxxxxx
        [32] => xxxxxxx

    )

然后字典看起来像这样:

$medicalInstanceDictionary = array(
    'CPT CODES' => "CPT_Code",
    'ASA CLASSFICATION' => "MG_ASA_Class",
    'FACILITY NAME' => "Facility_Name",
    'BILLING NUMBER' => "Billing_Number",
    'BILLING AREA NAME' => "Billing_Area_Name",
    'PROCEDURE MODIFIER1' => "Procedure_Modifier1",
    'PROCEDURE MODIFIER2' => "Procedure_Modifier2",
    'PRIMARY DX' => "Primary_Dx",
    'SECONDARY DX' => "Secondary_Dx",
    'INVOICE' => "FIN"
);

我正在做一个嵌套的 foreach 循环来获取每一行。

foreach ($dataarray as $dataindex => $datavalue)
{
    $out = "";
    foreach ($dictionary as $index => $value)
    {
        //find PATIENT MRN in $attributearray and get it's index
        $attributeindex = array_search($index, $attributearray);
        if ($attributeindex===FALSE) {
            echo "Error : ".$index." not found <br />";
        } else { 
            echo "<br>The attribute is: ".$value." The index is: ".$attributeindex."<br>";
        }

(more code....)
}
(more code....)
}

该 echo 语句如下所示:

The attribute is: CPT_Code The index is: 18

The attribute is: MG_ASA_Class The index is: 19

The attribute is: Facility_Name The index is: 25

The attribute is: Billing_Number The index is: 26

The attribute is: Billing_Area_Name The index is: 27

The attribute is: Procedure_Modifier1 The index is: 28

The attribute is: Procedure_Modifier2 The index is: 29

The attribute is: Primary_Dx The index is: 31
Error : SECONDARY DX not found

The attribute is: FIN The index is: 6

我不知道为什么它会跳过 Secondary_Dx。我检查了拼写错误。我不认为这是我的方法,因为它只对 Secondary_Dx 不起作用。我唯一能想到的是它做了一些时髦的事情,因为它是数组的最后一个元素。有没有人见过这个?

编辑:
添加元素(尝试了两种方法,并且都使用 print_r 生成了相同的外观数组:

//array_push($attributenames, "THE END");
$attributenames[] ="THE END";

echo "<pre>";
print_r($attributenames);
echo "</pre>";

来自上面的错误处理语句的输出:

Array
(
    [0] => PATIENT MRN
    [1] => PATIENT LAST NAME
    [2] => PATIENT FIRST NAME
    [3] => PATIENT MIDDLE NAME
    [4] => PATIENT SSN
    [5] => PATIENT SEX
    [6] => INVOICE
    [7] => TRANSACTION
    [8] => DATE OF PROCEDURE
    [9] => POSTING DATE
    [10] => LOCATION
    [11] => CHARGE AMT
    [12] => PROVIDER
    [13] => FSC1
    [14] => FSC2
    [15] => PATIENT DOB
    [16] => ATTENDING SURGEON
    [17] => ATTENDING SURGEON
    [18] => CPT CODES
    [19] => ASA CLASSFICATION
    [20] => ANESTHESIA CRNA
    [21] => ANESTHESIA RESIDENT
    [22] => SURGERY START TIME
    [23] => SURGERY END TIME
    [24] => SVC UNIT
    [25] => FACILITY NAME
    [26] => BILLING NUMBER
    [27] => BILLING AREA NAME
    [28] => PROCEDURE MODIFIER1
    [29] => PROCEDURE MODIFIER2
    [30] => PROCEDURE MODIFIER3
    [31] => PRIMARY DX
    [32] => SECONDARY DX

    [33] => THE END
)


This is dictionary array Array
(
    [CPT CODES] => CPT_Code
    [ASA CLASSFICATION] => MG_ASA_Class
    [FACILITY NAME] => Facility_Name
    [BILLING NUMBER] => Billing_Number
    [BILLING AREA NAME] => Billing_Area_Name
    [PROCEDURE MODIFIER1] => Procedure_Modifier1
    [PROCEDURE MODIFIER2] => Procedure_Modifier2
    [PRIMARY DX] => Primary_Dx
    [SECONDARY DX] => Secondary_Dx
    [INVOICE] => FIN
)


The attribute is: CPT_Code The index is: 18

The attribute is: MG_ASA_Class The index is: 19

The attribute is: Facility_Name The index is: 25

The attribute is: Billing_Number The index is: 26

The attribute is: Billing_Area_Name The index is: 27

The attribute is: Procedure_Modifier1 The index is: 28

The attribute is: Procedure_Modifier2 The index is: 29

The attribute is: Primary_Dx The index is: 31
Error : SECONDARY DX not found
Array ( [0] => PATIENT MRN [1] => PATIENT LAST NAME [2] => PATIENT FIRST NAME [3] => PATIENT MIDDLE NAME [4] => PATIENT SSN [5] => PATIENT SEX [6] => INVOICE [7] => TRANSACTION [8] => DATE OF PROCEDURE [9] => POSTING DATE [10] => LOCATION [11] => CHARGE AMT [12] => PROVIDER [13] => FSC1 [14] => FSC2 [15] => PATIENT DOB [16] => ATTENDING SURGEON [17] => ATTENDING SURGEON [18] => CPT CODES [19] => ASA CLASSFICATION [20] => ANESTHESIA CRNA [21] => ANESTHESIA RESIDENT [22] => SURGERY START TIME [23] => SURGERY END TIME [24] => SVC UNIT [25] => FACILITY NAME [26] => BILLING NUMBER [27] => BILLING AREA NAME [28] => PROCEDURE MODIFIER1 [29] => PROCEDURE MODIFIER2 [30] => PROCEDURE MODIFIER3 [31] => PRIMARY DX [32] => SECONDARY DX [33] => THE END )
Array ( [CPT CODES] => CPT_Code [ASA CLASSFICATION] => MG_ASA_Class [FACILITY NAME] => Facility_Name [BILLING NUMBER] => Billing_Number [BILLING AREA NAME] => Billing_Area_Name [PROCEDURE MODIFIER1] => Procedure_Modifier1 [PROCEDURE MODIFIER2] => Procedure_Modifier2 [PRIMARY DX] => Primary_Dx [SECONDARY DX] => Secondary_Dx [INVOICE] => FIN )
The attribute is: FIN The index is: 6
4

2 回答 2

0

你应该测试一个有效的$attributeindex

 $attributeindex = array_search($index, $attributearray);

 if ($attributeindex===FALSE) {
    echo "Error : ".$index." not found <br />";
   } else { 
    echo "<br>The attribute is: ".$value." The index is: ".$attributeindex."<br>";
   }

如果你得到一个 not found 错误,你可能是 shure $indexis not found in $attributearray

更新 :

这很奇怪!
从您的输出中我们可以清楚地看到。
$index == SECONDARY DX

并且
$attributearray 有一个键 [32]
[32] => SECONDARY DX

仅用于测试:
您可以在最后添加到 $attributearray
[33] => 'END'

看看会发生什么。

更新 2:

正如我在你得到的新输出中看到的那样

echo "<pre>";
print_r($attributenames);
echo "</pre>";

[32] 和 [33] 之间有一个空行。 在我怀疑换行符
的末尾必须有一个不可见的标志。[32] => SECONDARY DX

Array
(
    [0] => PATIENT MRN
    [1] => PATIENT LAST NAME
    ....
    [30] => PROCEDURE MODIFIER3
    [31] => PRIMARY DX
    [32] => SECONDARY DX

    [33] => THE END
)

尝试删除该字符,它应该可以工作。

小费:

如果您曾经遇到过类似的行为,您应该检查:

例如:

echo bin2hex($attributenames[32]);

windows中的输出看最后:

5345434f4e444152592044580d0a

哪里0dCR=Carriage return0aLF= Line feed

ASCII 表

在此处输入图像描述

于 2013-05-09T17:35:34.247 回答
0

尝试使用trim()您正在测试的值。如果最后有你看不到的空白,它将不匹配。

$attributeindex = trim( array_search($index, $attributearray) );
于 2013-05-13T16:36:11.390 回答