Php 首次文件写入后未更改的对象数组

Php 首次文件写入后未更改的对象数组,php,arrays,oop,object,Php,Arrays,Oop,Object,我在一个远程文件中有一个空数组,但打算暂时在其中添加和更改对象。但是,在添加初始的第一组对象后,数组不再接受任何值。我的错误日志报告了意外的'Object'(T_STRING),期望'”这意味着它将关键字“Object”视为我输入的字符串,因此我猜问题源于我的数组结构。下面是我在添加对象时使用的代码 include 'all_users.php'; $francis_udeh = new Admin("francis_udeh"); $all_users['francis_udeh'] = $

我在一个远程文件中有一个空数组,但打算暂时在其中添加和更改对象。但是,在添加初始的第一组对象后,数组不再接受任何值。我的错误日志报告了
意外的'Object'(T_STRING),期望'”
这意味着它将关键字“Object”视为我输入的字符串,因此我猜问题源于我的数组结构。下面是我在添加对象时使用的代码

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);
包括'all_users.php';
$francis_udeh=新管理员(“francis_udeh”);
$all_用户['francis_udeh']=$francis_udeh;
$victor_nwafor=新成员(“victor_nwafor”);
$all_用户['victor_nwafor']=$victor_nwafor;
$print\u arr=print\u r($all\u users,TRUE);
$updated_arr=“”;
文件内容('all\u users.php',$updated\u 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);
包括'all_users.php';
$raheem_sadiq=新成员(“raheem_sadiq”);
$all_用户['raheem_sadiq']=$raheem_sadiq;
$print\u arr=print\u r($all\u users,TRUE);
$updated_arr=“”;
文件内容('all\u users.php',$updated\u arr);

它返回我先前发布的错误,导致数组未更改。我做错了什么?

您在代码的开头包含了所有的\u users.php,但是在第一个文件\u put\u contents()之后,这个文件中的php代码不正确。

正如@Indra已经提到的:print\u r()给出的输出是人类可读的,但不是有效的php代码。如果您不可能通过数据存储(如mysql)传递数据,则可以通过serialize()将其放入文件中。或者,您也可以使用json(因为您的对象似乎是某种类型的数据访问对象),然后远程实例化这些对象。 希望这有帮助,
问候你

我还是被卡住了。解码功能不工作
$json\u arr=json\u encode($all\u用户)$更新的_arr=“”;文件内容('all\u users.php',$updated\u arr)$输出=json_解码(“$all_用户”);变量转储(输出);echo json_last_error()
@Mmayboy新代码有什么问题?除非您提供输出,包括任何错误消息,否则人们很难帮助您。在这种情况下,最好的方法(即使数据处理方式可能有点奇怪)是序列化数组,如
$serialized\u array=serialize($all\u users);文件内容(数据文件名,$serialized\u数组)
并从文件中读取,如
$all\u users=unserialize(文件获取内容('data\u文件名')希望这有帮助。@Mmayboy不,这不是你要做的。第一个问题是,您仍然试图将
all_users.php
视为一个php文件。当您将序列化数据写入PHP文件时,它就不再是PHP文件。但是,出现错误的原因是,回显对象属性值的语法完全错误
print\u r($all\u users)
您会发现它被反序列化了,完全符合您的要求。@Mmayboy它脱口而出整个序列化数组的原因是因为您正在执行
include操作“all_users.php
all_users.php
不是一个php文件,它是您编写序列化数据的地方。不要将其包含在
add_object.php
脚本中。