首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP数组将另一个数组用作字典时丢失的最后一个元素

PHP数组将另一个数组用作字典时丢失的最后一个元素
EN

Stack Overflow用户
提问于 2013-05-10 01:02:36
回答 2查看 386关注 0票数 1

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

这是第一个:

代码语言:javascript
运行
复制
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中而不是实际的患者数据中):

代码语言:javascript
运行
复制
[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

    )

那么字典看起来是这样的:

代码语言:javascript
运行
复制
$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循环来获取每一行。

代码语言:javascript
运行
复制
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语句如下所示:

代码语言:javascript
运行
复制
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生成了外观相同的数组:

代码语言:javascript
运行
复制
//array_push($attributenames, "THE END");
$attributenames[] ="THE END";

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

与上面的错误处理语句一起输出:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2013-05-14 00:36:11

尝试对要测试的值使用trim()。如果在结尾处有看不到的空格,就不会匹配。

代码语言:javascript
运行
复制
$attributeindex = trim( array_search($index, $attributearray) );
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16467129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档