【问题标题】:Laravel PHP - Convert a string to array from DBLaravel PHP - 将字符串从数据库转换为数组
【发布时间】:2021-11-18 19:29:49
【问题描述】:

我正在尝试做这样的事情:

$variable = Model::where($data)->get();

$data 在数据库中存储为['type' => 1, 'status' => 2]

我似乎无法正确地将数据从字符串解析为数组,我已经接近的最好的是

0 => "['type' => 1, 'status' => 2]"

我怎样才能正确地从 DB -> php 中的变量解析这个数组?

【问题讨论】:

  • 这不是可反序列化的格式。您应该为其编写自定义解析器,但可以评估该特定字符串:$array = eval("return $data;");
  • 如果您更改数据的存储方式并改用JSON之类的方式会更好。
  • @rickdenhaan - 哦,是的,谢谢。
  • @NigelRen - 我同意,谢谢,实际上 JSON 会更容易管理

标签: php arrays database laravel parsing


【解决方案1】:

我设法使用以下方法修复它:

$data = "['type' => 1, 'status' => 2]";
$variable = Model::where(eval("return $data;"))->get();

这将正常工作。

按照@rickdenhaan 的建议进行清理和更新。

【讨论】:

  • 请注意:如果您在此代码示例中像此处一样自己定义$data,最好避免使用eval(),而只写$data = ['type' => 1, 'status' => 2];(不带" 标记) , 那么$data 就已经是一个数组了。这基本上就是eval() 对你的字符串所做的事情。
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 2018-06-16
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 2013-08-12
  • 2021-12-27
相关资源
最近更新 更多