PHP:从数组索引获取值

时间:2015-11-03 16:32:19

标签: php arrays file

我有数据文件。每一行都有作者/作者的名字......如下所示:

"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 个答案:

答案 0 :(得分: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通过在每行中附加一个新行字符来写入另一个文件,即您将写入该文件的每个数组元素。

答案 1 :(得分:0)

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

使用;作为分隔符拆分字符串。您必须丢弃$part数组的最后一个元素,因为它将是''

这里你只有三个数组元素。因此,您不需要循环来进行置换。如果您有更多号码,请使用permutations by loop

答案 2 :(得分: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"
)