我可以收集爆炸然后再次爆炸吗?

Can I collect explode then explode again?

我正在尝试使用文本文件创建数据保存变量。我读到 laravel 中的 collect 函数是管理数据的正确选择。

下面是我用PHP_EOL爆破后保存的数据:

我想做的是用“|”对每个数组再爆炸一次,所以我的代码是这样的,但它不能。

$temps=explode(PHP_EOL,$note);
$isi=collect([
                explode('|',$temps)
            ]);

此代码只有在伴随着这样的手动数组时才能应用:

$isi=collect([
                explode('|',$temps[0]),
                explode('|',$temps[2])
            ]);

dd输出:

正如我认为你已经解决的那样,explode returns 一个数组但接受一个字符串,所以你不能将 explode 的结果直接传递给另一个 explode呼叫.

相反,您需要分别获取第一个 explodeexplode 生成的数组中的每个字符串。

显然,尝试 hard-code 对数组中每个项目的引用(根据您的尝试)是不切实际的,因此您可以使用循环来获取每个项目,或者更简洁的方法是使用 array_map,如以下示例所示:

function pipeExplode($str)
{
    return explode("|", $str);
}

$text = "sdlkfjsdl|kwflwerflwekr|wlkjlgk4w\n3rtljhrfgkjed|3jhkrjghd|4t44thj\n33rtlhwege|3rth3herjgke|hkjfgdf";
$arr = explode(PHP_EOL, $text);

$finalArr = array_map('pipeExplode', $arr);
print_r($finalArr);

演示:https://3v4l.org/EM6Ct

这将从第一个数组中获取每个字符串,将其传递给 pipeExplode 函数以从中获取一个新数组,然后将该数组添加回由 array_map函数。