Solución:
Su problema en este momento es básicamente que solo puede escribir cadenas en un archivo. Entonces, para usar file_put_contents
primero necesita convertir sus datos en una cadena.
Para este caso de uso específico, existe una función llamada serializar que convierte cualquier tipo de datos PHP en una cadena (excepto los recursos).
Aquí un ejemplo de cómo usar esto.
$string_data = serialize($array);
file_put_contents("your-file.txt", $string_data);
Probablemente también desee extraer sus datos más adelante. Simplemente use unserialize para convertir los datos de la cadena del archivo a una matriz.
Así es como lo haces:
$string_data = file_get_contents("your-file.txt");
$array = unserialize($string_data);
Aquí hay dos formas:
(1) Escriba una representación JSON del objeto de matriz en el archivo.
$arr = array( [...] );
file_put_contents( 'data.txt', json_encode( $arr ) );
Entonces despúes…
$data = file_get_contents( 'data.txt' );
$arr = json_decode( $data, true );
(2) Escriba una representación serializada del objeto de matriz en el archivo.
$arr = array( [...] );
file_put_contents( 'data.txt', serialize( $arr ) );
Entonces despúes…
$data = file_get_contents( 'data.txt' );
$arr = unserialize( $data );
Prefiero el método JSON, porque no se corrompe tan fácilmente como se serializa. Puede abrir el archivo de datos y realizar ediciones en el contenido, y se codificará / decodificará sin grandes dolores de cabeza. Los datos serializados no se pueden cambiar o corromper tan fácilmente, o unserialize () no funcionará. Cada variable se define por tipo y longitud, y estos valores deben actualizarse junto con el cambio real que está realizando.
file_put_contents escribe una cadena en un archivo, no una matriz. http://php.net/manual/en/function.file-put-contents.php
Si desea escribir lo que ve allí en ese print_r en un archivo, puede intentar esto:
ob_start();
print_r($myarray);
$output = ob_get_clean();
file_put_contents("myfile.txt",$output);