第一次写入文件后未更改的对象数组

时间:2016-03-22 06:52:07

标签: php arrays oop object

我在远程文件中有一个空数组,但打算暂时添加和更改其中的对象。但是,在添加初始第一组对象后,该数组不再接受任何值。我的错误日志报告unexpected 'Object' (T_STRING), expecting ')',这意味着它会关注关键字"对象"作为一个由我推测的字符串所以我猜这个问题源于我的数组结构。这是我在添加对象时使用的代码

include 'all_users.php';

$francis_udeh = new Admin("francis_udeh");
$all_users['francis_udeh'] = $francis_udeh;

$victor_nwafor = new Member("victor_nwafor");
$all_users['victor_nwafor'] = $victor_nwafor;
$print_arr = print_r($all_users, TRUE);

$updated_arr = "<?php \n \$all_users = $print_arr; \n?>";
file_put_contents('all_users.php', $updated_arr);

在远程文件中返回以下内容

<?php 
$all_users = Array
(
[francis_udeh] => Admin Object
    (
        [name] => francis udeh
        [pagename] => francis.udeh
        [can_comment] => 1
        [can_view_announcements] => 1
        [profile_pic] => /blog/accounts/assets/user.png
        [can_delete_comment] => 1
    )

[victor_nwafor] => Member Object
    (
        [name] => victor nwafor
        [pagename] => victor.nwafor
        [can_comment] => 1
        [can_view_announcements] => 1
        [profile_pic] => /blog/accounts/assets/user.png
    )

 );

 ?>

(顺便说一句,这就是我想要的)。但是,当我尝试

include 'all_users.php';
$raheem_sadiq = new Member("raheem_sadiq");
$all_users['raheem_sadiq'] = $raheem_sadiq;
$print_arr = print_r($all_users, TRUE);

$updated_arr = "<?php \n \$all_users = $print_arr; \n?>";
file_put_contents('all_users.php', $updated_arr);

它返回我之前发布的错误,导致数组不变。我做错了什么?

2 个答案:

答案 0 :(得分:2)

在代码的开头包含all_users.php,但在第一个file_put_contents()之后,这个文件中的PHP代码不正确。

答案 1 :(得分:2)

正如@Indra已经提到的那样:print_r()给出的输出是人类可读的,但不是有效的PHP代码。如果您不具备通过数据存储(如mysql)传递数据的可能性,则可能需要使用serialize()将其置于文件中。或者,您也可以使用json(因为您的对象似乎是某种类型的数据访问对象),然后远程实例化对象。 希望这可以帮助, 问候