2014-06-30 54 views
0

我創建一個方法,將讀取與應用程序/八位字節類型的文件,這裏是一些代碼。 原始數據:PHP Array包含字符串

GTHHS;MEKID Interface;5496;2012-07-20; NM1;081;IN1;980898989;2001-01-15;Mr;Gaf;Uhkil;Uhkil,Gaf;PRI;Gaf

$contents = file_get_contents($tmp_filename); 
$stringContents = explode(";", $contents); 

現在,它給了我這樣的輸出:

Array 
(
    [0] => GTHHS 
    [1] => MEKID Interface 
    [2] => 5496 
    [3] => 2012-07-20 
NM1 
    [4] => 081 
    [5] => IN1 
    [6] => 980898989 
    [7] => 2001-01-15 
    [8] => Mr 
    [9] => Gaf 
    [10] => Uhkil 
    [11] => Uhkil,Gaf 
    [12] => PRI 
    [13] => Gaf 
PR1 
    [14] => 081 
    [15] => IN1 
    [16] => 20730089 
    [17] => 7 The Schooner 
    [18] => Auhaas 
    [19] => Huuula Ave 
    [20] => 
    [21] => Kishma 
PR2 
    [22] => 081 
    [23] => IN1 
    [24] => 232323233 
    [25] => 400006 
    [26] => HGD 
    [27] => M 
    [28] => M 
    [29] => 2007-10-16 
    [30] => 1976-03-31 
); 

我怎樣才能讓NM1PR1作爲陣列的像這樣的頭:

我也計劃t將內部數組[0] - [3]作爲json。

+0

您是如何確定在爆炸的元素,這些數組鍵(你提到的頭)的次數?這是因爲你在這裏解碼而出現換行嗎? – mithunsatheesh

+0

提供的原始數據,我認爲有另一種方式來打破這一點,因爲沒有模式在哪裏得到所需的密鑰 – user1978142

+0

完成編輯我的文章。 – vnpnlz

回答

1

如果通過\n分解內容,則每行都以該標識符開頭。如果你只是在該行中爆炸;並將其作爲子陣列添加,就可以像你想的那樣。

這實際上看起來像一個簡單的舊的CSV文件與第一行ifentifier。如果是這樣,嘗試這樣的事情:

$data = array(); 
if (($handle = fopen($filename, 'r')) !== FALSE) 
{ 
    while (($row = fgetcsv($handle, 1000, ";", "\"", "\n")) !== FALSE) 
    { 
     $key = array_shift($row); 
     $data[$key] = $row; 
    } 
    fclose($handle); 
} 

echo json_encode($data); 

http://php.net/manual/en/function.str-getcsv.php

+0

感謝您的迴應。該文件不是csv,而只是一個FILE文件。它沒有任何擴展名。 – vnpnlz

+0

擴展名無關緊要。這是否工作?什麼沒有? – ToBe

+0

謝謝你。它實際上工作。 – vnpnlz