我在远程文件中有一个空数组,但打算暂时添加和更改其中的对象。但是,在添加初始第一组对象后,该数组不再接受任何值。我的错误日志报告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);
它返回我之前发布的错误,导致数组不变。我做错了什么?
答案 0 :(得分:2)
在代码的开头包含all_users.php,但在第一个file_put_contents()之后,这个文件中的PHP代码不正确。
答案 1 :(得分:2)
正如@Indra已经提到的那样:print_r()给出的输出是人类可读的,但不是有效的PHP代码。如果您不具备通过数据存储(如mysql)传递数据的可能性,则可能需要使用serialize()将其置于文件中。或者,您也可以使用json(因为您的对象似乎是某种类型的数据访问对象),然后远程实例化对象。 希望这可以帮助, 问候