【问题标题】:Filter an array using explode使用explode过滤数组
【发布时间】:2014-10-14 02:40:59
【问题描述】:

我的问题很简单。我的表格中有一个标有“区域”的列,如下所示:

马南海岸
ma_south-caost
ma_north
ca_los-angelos
ca_los-angelos

我希望能够只选择“ma”。我正在尝试做一些事情,例如:

$res_area = mysqli_query($connection,"select area from users");
        while ($row_state = mysqli_fetch_array($res_area)) {
        $state_exp = reset(explode("_", $row_state['area']));
        }

此时打印 $state_exp 会给我:mamamacaca,这很好。但我想过滤,所以我只得到 ma 的。

【问题讨论】:

  • 您需要使用过滤器——explode 不会像您希望的那样为您工作。 php.net/manual/en/function.array-filter.php 如果您在 SQL 查询中使用 LIKE 或 SUBSTRING 执行此操作会更好。
  • 您希望通过 SQL 查询还是在 PHP 中执行此操作?
  • 谢谢@JayBlanchard 我不确定是否可以。我也许可以在 SQL 查询中做到这一点?我正在想象从用户那里选择区域的东西,其中 [当前值] == [使用爆炸的变量的前两个字母]

标签: php mysql arrays filter while-loop


【解决方案1】:

最佳解决方案可能是:-

$res_area = mysqli_query($connection,"select area from users WHERE area LIKE 'ma_*')";
        while ($row_state = mysqli_fetch_array($res_area)) {
        if(stripos(reset(explode("_", $row_state['area'])),'ma') !== FALSE)
        {
           $state_exp = reset(explode("_", $row_state['area']));
        }
      }

【讨论】:

  • 我喜欢这是一种明确的方法,而不是依靠 PHP 的魔法来弄清楚什么是“喜欢”什么。 Idk...魔法目前正在为我工​​作。
  • @Jbreen37 很高兴我能帮助你!但是为什么 Downvote ?.wud 是 gr8,如果它可以变成 upvote。
  • @Jbreen37 哦对不起。真是我的倒霉!
【解决方案2】:

您正在寻找LIKE 运算符。 LIKE 运算符用于在列中搜索指定模式。 试试这个:

        SELECT * FROM tablename WHERE areaLIKE 'ma_%';

您可以阅读有关LIKE 运算符here 的更多信息。

【讨论】:

  • 完美!很高兴听到并乐于提供帮助! :0)
【解决方案3】:

你可以试试这个:

$res_area = mysqli_query($connection,"select area from users");
        while ($row_state = mysqli_fetch_array($res_area)) {
        $state_exp = stristr(reset(explode("_", $row_state['area'])),'ma');
        }

【讨论】:

  • 我的方案最好在我的 sql 查询中使用“like”进行过滤。然而,这也是一种有趣的方法。我敢肯定,我迟早会使用这个功能。
【解决方案4】:

您可以使用WHERE column LIKE "ma%" 扩展您的查询,或者使用substr($row_state['area],0,2) 检查前两个字符是否为“ma”。

【讨论】:

    猜你喜欢
    • 2013-06-18
    • 1970-01-01
    • 2023-01-02
    • 2021-07-17
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多