Запись массива в файл в php И получение данных

У меня есть массив, который выглядит следующим образом после использования print_r

 Array ( [0] => Array ( [0] => piklu [name] => piklu ) [1] => Array ( [0] => arindam [name] => arindam ) [2] => Array ( [0] => shyamal [name] => shyamal ) [3] => Array ( [0] => arko [name] => arko ) [4] => Array ( [0] => pamela [name] => pamela ) [5] => Array ( [0] => dodo [name] => dodo ) [6] => Array ( [0] => tanmoy [name] => tanmoy ) [7] => Array ( [0] => jitu [name] => jitu ) [8] => Array ( [0] => ajgar [name] => ajgar ) ) 

Теперь я хочу написать этот массив напрямую в файл, я использую метод file_put_contents , но я не знаю, как получить данные из файла, как они выглядят как оригинальные. Любая идея решить это?

На данный момент ваша проблема связана с тем, что вы можете записывать строки только в файл. Поэтому, чтобы использовать file_put_contents вам сначала нужно преобразовать данные в строку.

Для этого конкретного случая использования существует функция serialize, которая преобразует любой тип данных PHP в строку (кроме ресурсов).

Вот пример того, как это использовать.

 $string_data = serialize($array); file_put_contents("your-file.txt", $string_data); 

Вероятно, вы также захотите извлечь ваши данные позже. Просто используйте unserialize для преобразования строковых данных из файла обратно в массив.

Вот как вы это делаете:

 $string_data = file_get_contents("your-file.txt"); $array = unserialize($string_data); 

Вот два способа:

(1) Напишите JSON-представление объекта массива в файл.

 $arr = array( [...] ); file_put_contents( 'data.txt', json_encode( $arr ) ); 

Тогда позже…

 $data = file_get_contents( 'data.txt' ); $arr = json_decode( $data ); 

(2) Напишите сериализованное представление объекта массива в файл.

 $arr = array( [...] ); file_put_contents( 'data.txt', serialize( $arr ) ); 

Тогда позже…

 $data = file_get_contents( 'data.txt' ); $arr = unserialize( $data ); 

Я предпочитаю метод JSON, потому что он не повреждается так же легко, как сериализация. Вы можете открыть файл данных и внести изменения в содержимое, и он будет кодировать / декодировать обратно без больших головных болей. Сериализованные данные не могут быть изменены или повреждены, или unserialize () не будет работать.

file_put_contents записывает строку в файл, а не в массив. http://php.net/manual/en/function.file-put-contents.php

Если вы хотите написать то, что видите в этом файле print_r, вы можете попробовать следующее:

 ob_start(); print_r($myarray); $output = ob_get_clean(); file_put_contents("myfile.txt",$output); 

Я не уверен, но может быть, что-то вроде этого. Вы хотите сериализовать () массив при написании. он поместит ваш массив в test.txt

 file_put_contents('test.txt', serialize($array));