如何在PHP中检索put_文件内容中的数据?

如何在PHP中检索put_文件内容中的数据?,php,arrays,Php,Arrays,我的代码有问题。我的目标是在txt文件中写入数据并检索该数据。 在写入数据时,我使用了一个数组。我添加了FILE_APPEND参数来重写文本文件。 在我将数据写入文本文件后,我首先将其序列化。然后在写入数据后,我使用file\u get\u内容检索数据。我将其取消序列化以以数组形式显示 现在我的问题是。如果我添加新数据,文本文件将被覆盖,但在数组中显示我的数据。它将始终获得索引“0”的第一个索引。我无法获取所有序列化数组 这是我的密码: $data_add = array(

我的代码有问题。我的目标是在txt文件中写入数据并检索该数据。 在写入数据时,我使用了一个数组。我添加了FILE_APPEND参数来重写文本文件。 在我将数据写入文本文件后,我首先将其序列化。然后在写入数据后,我使用file\u get\u内容检索数据。我将其取消序列化以以数组形式显示

现在我的问题是。如果我添加新数据,文本文件将被覆盖,但在数组中显示我的数据。它将始终获得索引“0”的第一个索引。我无法获取所有序列化数组

这是我的密码:

$data_add = array(

                array(
                    'restaurant_id' => $restaurant_id,
                    'new_lat' => $new_lat_entry,
                    'new_long' => $new_long_entry,
                    'date_updated' => date('Y-m-d H:i:s')
                )

            );


            $serialize_data = serialize($data_add);
            file_put_contents("test.txt", $serialize_data, FILE_APPEND | LOCK_EX); //write the text file

...

$array = unserialize(file_get_contents('test.txt'));

print_r($array); //display it
我的示例.txt文件

a:1:{i:0;a:4:{s:13:"restaurant_id";s:4:"1212";s:7:"new_lat";s:8:"14.69327";s:8:"new_long";s:9:"120.96785";s:12:"date_updated";s:19:"2013-11-14 08:34:50";}}
a:1:{i:0;a:4:{s:13:"restaurant_id";s:4:"1229";s:7:"new_lat";s:8:"14.61431";s:8:"new_long";s:9:"120.99054";s:12:"date_updated";s:19:"2013-11-14 08:35:10";}}
但我在阵列中得到的是:

Array
(
    [0] => Array
        (
            [restaurant_id] => 1212
            [new_lat] => 14.69327
            [new_long] => 120.96785
            [date_updated] => 2013-11-14 08:34:50
        )

)

如何从数组中检索所有值?

附加另一个序列化字符串不会使
取消序列化
神奇地将整个内容作为单个序列化变量读取。您需要更改代码,首先获取当前内容并取消序列化,然后将当前数组与以前的数据合并,然后序列化并放回

或者,您可以将它们放在单独的行上,然后读取并取消序列化每行,然后合并

编辑:示例。这是可行的,但理想情况下,在尝试添加数据之前,应该检查未序列化数据的结构,以确保其光亮

$data_add =  array(
  'restaurant_id' => $restaurant_id,
  'new_lat' => $new_lat_entry,
  'new_long' => $new_long_entry,
  'date_updated' => date('Y-m-d H:i:s')
);

$data = unserialize(file_get_contents('test.txt'));
$data[] = $data_add;

$serialize_data = serialize($data);
file_put_contents("test.txt", $serialize_data, LOCK_EX); //write the text file

$array = unserialize(file_get_contents('test.txt'));

echo "<pre>";
print_r($array); //display it
$data\u add=array(
“餐厅id”=>$餐厅id,
'new_lat'=>$new_lat_条目,
“new_long”=>$new_long\u条目,
“更新日期”=>日期('Y-m-d H:i:s')
);
$data=unserialize(文件获取内容('test.txt');
$data[]=$data\u add;
$serialize_data=serialize($data);
文件内容(“test.txt”,$serialize\u data,LOCK\u EX)//编写文本文件
$array=unserialize(文件获取内容('test.txt');
回声“;
打印(数组)//展示它

追加另一个序列化字符串不会使
取消序列化
神奇地将整个内容作为单个序列化变量读取。您需要更改代码,首先获取当前内容并取消序列化,然后将当前数组与以前的数据合并,然后序列化并放回

或者,您可以将它们放在单独的行上,然后读取并取消序列化每行,然后合并

编辑:示例。这是可行的,但理想情况下,在尝试添加数据之前,应该检查未序列化数据的结构,以确保其光亮

$data_add =  array(
  'restaurant_id' => $restaurant_id,
  'new_lat' => $new_lat_entry,
  'new_long' => $new_long_entry,
  'date_updated' => date('Y-m-d H:i:s')
);

$data = unserialize(file_get_contents('test.txt'));
$data[] = $data_add;

$serialize_data = serialize($data);
file_put_contents("test.txt", $serialize_data, LOCK_EX); //write the text file

$array = unserialize(file_get_contents('test.txt'));

echo "<pre>";
print_r($array); //display it
$data\u add=array(
“餐厅id”=>$餐厅id,
'new_lat'=>$new_lat_条目,
“new_long”=>$new_long\u条目,
“更新日期”=>日期('Y-m-d H:i:s')
);
$data=unserialize(文件获取内容('test.txt');
$data[]=$data\u add;
$serialize_data=serialize($data);
文件内容(“test.txt”,$serialize\u data,LOCK\u EX)//编写文本文件
$array=unserialize(文件获取内容('test.txt');
回声“;
打印(数组)//展示它

我认为您需要首先读取内容,取消序列化,将内容添加到值中,然后将整个数组写回。

我认为您需要首先读取内容,取消序列化,将内容添加到值中,然后将整个数组写回。

您得到了您想要的内容。听起来像是“按计划工作”。您希望得到什么?正如您在我的示例txt文件中看到的,我有2个数据。但是当我在数组中显示时,它将得到第一个。数组无法获取全部数据。我看不出我的代码哪里出错了。我猜它在数组中。我现在可以看到^^我很确定当我写注释时它不在数组中:D(哦,好的,是的。但是你必须滚动并读取整个序列化字符串才能注意到它……现在好多了^^^),那么我应该怎么做才能将新数据附加到现有的字符串中呢?我应该将索引替换为关联索引吗?请参阅@CrayonViolet的答案。几乎什么都有,你什么都有。听起来像是“按计划工作”。您希望得到什么?正如您在我的示例txt文件中看到的,我有2个数据。但是当我在数组中显示时,它将得到第一个。数组无法获取全部数据。我看不出我的代码哪里出错了。我猜它在数组中。我现在可以看到^^我很确定当我写注释时它不在数组中:D(哦,好的,是的。但是你必须滚动并读取整个序列化字符串才能注意到它……现在好多了^^^),那么我应该怎么做才能将新数据附加到现有的字符串中呢?我应该将索引替换为关联索引吗?请参阅@CrayonViolet的答案。几乎什么都有。