Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-将字符串转换为已格式化为数组的数组_Php - Fatal编程技术网

PHP-将字符串转换为已格式化为数组的数组

PHP-将字符串转换为已格式化为数组的数组,php,Php,为了澄清起见,我使用了两个单独的文件。因此,我试图检查在我的第二个文件中生成的数组中是否存在一个值。第一个文件存储下面的输入 //mytxtfile.txt previous content stored in a text file using file_put_content and print_r... Array ( [0] => Bill [1] => Bob [2] => Joe [3] => Frank [4] =&g

为了澄清起见,我使用了两个单独的文件。因此,我试图检查在我的第二个文件中生成的数组中是否存在一个值。第一个文件存储下面的输入

//mytxtfile.txt previous content stored in a text file using file_put_content and print_r...
Array
(
    [0] => Bill
    [1] => Bob
    [2] => Joe
    [3] => Frank
    [4] => Mark
)

我的第二个文件我尝试调用file_get_content,但现在意识到它将我的输入存储为字符串。有没有办法将这个字符串转换回我的新文件中的数组?我尝试了json_解码,但它说它是空的。。。或者,如果这太麻烦,我也愿意更改它在生成内容的第一个文件中的存储格式。

我将详细解释解决方案,但首先让我发布代码:

    <?php //php 7.0.8

        $input = "Array
        (
            [0] => Bill
            [1] => Bob
            [2] => Joe
            [3] => Frank
            [4] => Mark
        )";

        $lines = explode("\n", $input); 
        $values = array();
        for ($i = 2; $i < count($lines) - 1; $i++) {
            $value = explode("=>", $lines[$i])[1];
            $value = trim($value);
            array_push($values, $value);
        }

        print_r($values);
    ?>

因此,文件包含格式化数组作为文本,我们将文件内容拆分为行,这可以使用
explode()
函数完成,现在
$lines
数组包含文件的文本行。
现在,我们将循环提取值,注意循环从
$i=2
开始,这是因为我们忽略了第一行(包含
数组
)和第二行(包含
),循环在最后一行之前结束,因为我们忽略了最后一行(包含

我们初始化一个空数组
$values
来存储数组的值,为此我们再次需要使用
explode()
函数拆分每一行,但要记住分隔符是
=>
,这将返回一个类似于(“[0]”,Bill”)的数组,因为我们需要使用索引1的字符串“Bill”。
接下来(这一步是可选的),我们使用
trim()
函数去除值前的空格。
最后,我们将结果
$value
推送到空数组中。
循环结束时,您将获得提取的值。
为了便于参考,以下是所用函数的文档:
trim()

explode()


array\u push()

    <?php //php 7.0.8

        $input = "Array
        (
            [0] => Bill
            [1] => Bob
            [2] => Joe
            [3] => Frank
            [4] => Mark
        )";

        $lines = explode("\n", $input); 
        $values = array();
        for ($i = 2; $i < count($lines) - 1; $i++) {
            $value = explode("=>", $lines[$i])[1];
            $value = trim($value);
            array_push($values, $value);
        }

        print_r($values);
    ?>

因此,文件包含格式化数组作为文本,我们将文件内容拆分为行,这可以使用
explode()
函数完成,现在
$lines
数组包含文件的文本行。
现在,我们将循环提取值,注意循环从
$i=2
开始,这是因为我们忽略了第一行(包含
数组
)和第二行(包含
),循环在最后一行之前结束,因为我们忽略了最后一行(包含

我们初始化一个空数组
$values
来存储数组的值,为此我们再次需要使用
explode()
函数拆分每一行,但要记住分隔符是
=>
,这将返回一个类似于(“[0]”,Bill”)的数组,因为我们需要使用索引1的字符串“Bill”。
接下来(这一步是可选的),我们使用
trim()
函数去除值前的空格。
最后,我们将结果
$value
推送到空数组中。
循环结束时,您将获得提取的值。
为了便于参考,以下是所用函数的文档:
trim()

explode()

array\u push()




print\r不是序列化,而是使用,或然后或。。把它转换回来并不容易。。哦,好吧。。。因此,我将我的第一个文件改为json_编码,它可以工作。。。。感谢您的帮助打印不是序列化,而是使用,或然后或。。把它转换回来并不容易。。哦,好吧。。。因此,我将我的第一个文件改为json_编码,它可以工作。。。。感谢您的帮助。此限制适用于索引数组,如果将\d+更改为\w+,则它也将处理关联数组。此限制适用于索引数组,如果将\d+更改为\w+,则它也将处理关联数组。