使用explode过滤数组

时间:2014-08-20 16:23:33

标签: php mysql arrays filter while-loop

我的问题很简单。我的表格中有一栏标有“' area'看起来像是:

ma_south海岸
ma_south-caost
ma_north
ca_los - 安吉洛
ca_los-安耶洛斯

我希望能够只选择“妈妈”。那些。我正在尝试做以下事情:

$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,这很好。但是我想要过滤所以我只得到了那些。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

你可以试试这个:

$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');
        }

答案 2 :(得分:1)

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

        SELECT * FROM tablename WHERE areaLIKE 'ma_%';

您可以详细了解LIKE运算符here

答案 3 :(得分:-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']));
        }
      }