【问题标题】:How to search data in serialized php array如何在序列化的php数组中搜索数据
【发布时间】:2016-05-06 11:35:02
【问题描述】:

我很困惑如何在序列化的 php 数组中搜索特定值。

例如

我已将星期几存储在 usermeta 表中,键为可用天数。

现在我想通过搜索表单显示在给定日期哪些用户可用。

我的序列化数组是这样的

a:6:{i:0;s:6:"Sunday";i:1;s:6:"Monday";i:2;s:7:"Tuesday";i:3;s:9:"Wednesday";i:4;s:8:"Thursday";i:5;s:6:"Friday";}

我不想使用 like % 运算符。任何替代方案都是合适的。

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 你应该先取消序列化它,它会让你的生活更轻松。如果您在数据库中存储序列化数据,您真的需要重新考虑您的数据存储策略。数据库中的序列化数据永远不会有好的结局。
  • 是的,当它被序列化时你不能搜索它——所以如果你真的必须搜索它,你需要将未序列化的数据保存在数据库中并为其编制索引。

标签: php mysql wordpress


【解决方案1】:

我认为你的问题没有mysql解决方案。它“可能”适用于LIKE 对“简单”php 对象的查询,但不能保证。对于搜索字符串,LIKE 查询将始终有效,但您不能保证字符串出现在正确的上下文中。

但是没有通用的mysql解决方案。您需要反序列化 php 中的行,然后在对象/数组本身中搜索。

【讨论】:

    【解决方案2】:

    反序列化a:6:{i:0;s:6:"Sunday";i:1;s:6:"Monday";i:2;s:7:"Tuesday";i:3;s:9:"Wednesday";i:4;s:8:"Thursday";i:5;s:6:"Friday";}

    然后通过array_search('$search', $array);搜索值

    【讨论】:

      猜你喜欢
      • 2020-06-30
      • 2012-05-17
      • 1970-01-01
      • 2011-05-30
      • 2020-03-13
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      相关资源
      最近更新 更多