1

私は3つの配列を持っています。$attributenames に保存されているユーザーからの特定のタイトル情報を含むも​​の。2 番目には、ユーザーからのデータが $anesdata に格納されています。(最初の 2 つは関連しています) そして 3 番目は $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

)

2 番目の配列は 2 次元配列ですが、各行は 1 人の患者に相当します。最初の患者は次のようになります (実際の患者データの代わりに 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>";
   }

見つからないというエラーが表示された場合は、 に が見つかり$indexません$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]);

ウィンドウの出力は最後に表示されます:

5345434f4e444152592044580d0a

0dは=であり、CR=です。Carriage return0aLFLine feed

アスキーテーブル

ここに画像の説明を入力

于 2013-05-09T17:35:34.247 に答える
0

trim()テストしている値で使用してみてください。最後に見えない空白があると一致しません。

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