2015-11-03 3 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

use foreach() loop to loop через '$ authArr' array –

+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" 
) 
Смежные вопросы