2013-07-22 3 views
0

I'm научиться работать с файлами в PHP, первый я сделал эту функцию для записи в файл, подмигнул довольно просто:двухмерный массив после fgets?

function zapis_do_suboru($zapisovany_subor, $obsah_suboru) 
{ 
    $pracovny_subor = fopen($zapisovany_subor,"w") or die("Chyba pri otvarani suboru"); 
    fwrite($pracovny_subor, $obsah_suboru) or die("Nejde zapisovat do suboru"); 
    fclose($pracovny_subor); 
    echo "Zapis $zapisovany_subor prebehol uspesne."; 
} 

Тогда я сделал функцию для чтения из файла, но я был немного застрял здесь, потому что моя книга объясняет, как читать только одну строку, но потом я гугле немного и нашли какое-то решение и сделал эту функцию для чтения из файла:

function citanie_zo_suboru($citany_subor) 
{ 
    $pracovny_subor = fopen($citany_subor,"r") or die("Chyba pri otvarani suboru"); 
    $j = 0; 
    while(!feof($pracovny_subor)) 
     { 
     $pole[$j] = array(fgets($pracovny_subor, 4096)); 
     $j++;  
     } 

    fclose($pracovny_subor); 
    return $pole; 
} 

Тогда я хотел, чтобы проверить его, так i создаю две переменные:

$subor = "textsubor.txt"; 
$text = <<<_END 
Riadok1 blabla 
Riadok2 blabla 
Riadok3 meno suboru: $subor 
_END; 

И это призвание функций:

zapis_do_suboru($subor, $text); 
echo "<br />"; 
foreach (citanie_zo_suboru($subor) as $index =>$popis) 
    echo $popis."<br />"; 

Но проблема в том, что функция citanie_zo_suboru создает двумерную матрицу, поэтому выход был только «массив массива массив массив». С print_r и немного попыток я обнаружил, что, когда я изменить:

foreach (citanie_zo_suboru($subor) as $index =>$popis) 
    echo $popis."<br />"; 

к:

foreach (citanie_zo_suboru($subor) as $index =>$popis) 
    echo $popis[0]."<br />"; 

он делает именно то, что я хотел. Может ли кто-нибудь сказать мне, почему моя функция создает двухмерный, а не только классический одномерный массив? Я был бы очень благодарен, если бы мог. Благодаря

+0

выглядит как $ pole [$ j] = array (fgets ($ pracovny_subor, 4096)); должен быть $ pole [$ j] = fgets ($ pracovny_subor, 4096); –

+0

@JoeMinichino ou спасибо, что это действительно работает, теперь я понимаю, что я сделал неправильно :) Большое спасибо –

ответ

1

Вы сохраняете массив в ключе массива:

$pole[$j] = array(fgets($pracovny_subor, 4096)); 

Итак, $ полюсные [0] должен дополнительно содержать массив.

+0

Да, я вижу и с комментарием от @JoeMinichino, это сработало. Благодарю. –

+0

Полезно знать, что ваша проблема решена :) –

0

Чтобы просто написать файл можно использовать file_put_contens(): http://php.net/manual/fr/function.file-put-contents.php

Чтобы прочитать файл, который вы имеете тот же file_get_contents(): http://php.net/manual/en/function.file-get-contents.php

Чтобы прочитать файл и сохранить каждую строку в качестве значения в массиве с помощью file(): http://www.php.net/manual/en/function.file.php

Я надеюсь, что эта функция 3 поможет вам в вашей текущей проблеме.

+0

Да, я знаю об этих функциях, но я хотел сделать это с помощью моей функции. Но спасибо :) –

Смежные вопросы