2015-11-03 114 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" 
)