У меня есть массив, который выглядит следующим образом после использования 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));