tu problema esta en pensar que de esa forma podría guardar un array, cosa que es completamente errada....
Código PHP:
$archivo = array($id);//lo metemos en un array
osea, si... lo estas metiendo en un array, pero solo la representación como string y no se interpreta como array...
de modo que hacer lo siguiente esta mal también:
Código PHP:
$cadena = "'".$num."' => '".$user." escribió el ".$fecha.":<br>".$mensaje."',";//cadena a escribir archivo
y es verdad, esa es solo una cadena... en ningún momento es un array, y solo por tu mente pasa de que podría "crear" un array con esa información, lo cual es falso...
sin embargo podrías usar
var_export() para guardar la representación en código de tu array, quedando el archivo algo así...
Código PHP:
<?php return array('hola mundo');
y en PHP, para que sea cargado como array no debes leerlo como archivo... debes cargarlo como código, esto se hace usando
include Código PHP:
$foo = include 'archivo.php';
print_r($foo);