2015-11-03 110 views
3

我有數據文件。每一行都有作者姓名/ authors..it看起來是這樣的:PHP:從數組索引中獲取值

"Giacometti, Jasminka"; "Mazor Jolic, Slavica"; "Josic, Djuro"; 
"Hoffmeister, Karin M"; "Grozovsky, Renata"; "Jurak Begonja, Antonija"; "Hartwig, John H"; 
"Jakopovic, Boris"; "Kraljevic Pavelic, Sandra"; "BelScak-Cvitanovic, Ana"; "Harej, Anja"; "Jakopovich, Ivan"; 

例如,第一行:

"Giacometti, Jasminka"; "Mazor Jolic, Slavica"; "Josic, Djuro"; 

我需要得到這一點,它在另一個文件中寫道:

"Giacometti, Jasminka"; "Mazor Jolic, Slavica";1 
"Giacometti, Jasminka"; "Josic, Djuro";1 
"Mazor Jolic, Slavica"; "Josic, Djuro";1 

我該怎麼做在PHP?我嘗試着獲取數組中的每一行,但後來我不知道如何從該行分割數據。

$handle = @fopen("datas.txt", "r"); 
$listA = array(); 
if ($handle) { 
    while (($buffer = fgets($handle, 4096)) !== false) { 
     $listA[] = $buffer; 
} 

謝謝。

回答

3

首先讀取從包含該數據作爲全一個完整的字符串,然後爆炸以行字符的結束該字符串的文件中的內容的內容,因此每個數組元素現在將包含數據的一個行:

$data = file_get_contents("data.txt"); //data.txt is the file that contains rows of data 

$authArr = explode(PHP_EOL, $data); //this array contains all the rows in it 

現在,您可以使用此$authArr通過向每行添加新的行字符(即要寫入文件的陣列的每個元素)來寫入另一個文件。

+0

是的,但我仍然不明白如何在'$ authArr [5]'中分割數據。 – xKRgirl01

+0

使用foreach()循環循環遍歷'$ authArr'數組 –

+0

謝謝,我做了一些有點不同,但是這幫助了很多。 '$ newElement = explode(「;」,$ authArr [5]);' – xKRgirl01

0
foreach ($$listA as $key) 
    { 
    $part = explode(";",$key); 
    } 

使用;作爲分隔符分割字符串。您必須丟棄$part陣列的最後一個元素,因爲它將是''

這裏你只有三個元素在數組中。所以你不需要循環來排列。如果您有更多的號碼,請使用permutations by loop

0

我不確定你想要對作者做什麼,但是這會將每行分隔成一個作者數組;

<?php 

$source_string = file_get_contents('source.txt'); // Load the source file. 
$source_array = explode(PHP_EOL, $source_string); // Create an array of one element per line. 

// Iterate over the source array. 
foreach($source_array as $line) { 
    $trimmed = rtrim($line, ';');      // Trim the semicolon from the end of the line. 
    $array_of_authors = explode('; ', $trimmed);  // Explode the line into an array of one element per author. 
    $output = print_r($array_of_authors, true); 
    echo "<div>Line: {$line}</div>"; 
    echo "<xmp>{$output}</xmp>"; 
} 

?> 

上面產生的輸出是這樣開始的;

Line: "Giacometti, Jasminka"; "Mazor Jolic, Slavica"; "Josic, Djuro"; 

Array 
(
    [0] => "Giacometti, Jasminka" 
    [1] => "Mazor Jolic, Slavica" 
    [2] => "Josic, Djuro" 
)