【问题标题】:While statment with multiple values contained in an array数组中包含多个值的 While 语句
【发布时间】:2014-05-02 10:21:51
【问题描述】:

我有一个数据库,每个条目包含几位信息。我使用 while 语句循环遍历每一个并显示我所谓的“绘图”,这将是一个数字,每个条目可以包含多个绘图 EG 111、222、333

我需要做什么我有 while 语句(或另一种可能更适合的方法)来检查每个条目所包含的绘图编号是否包含在我设置的数组中,然后显示这些信息 例如:

while ($row = mysqli_fetch_array($aa, MYSQLI_ASSOC)) {

    $plotsTotal1 = explode(" ", $row['exoutdoorspaceplottotals']);
    $plotsTotal2 = array_filter($plotsTotal1); 
    //this gets info from DB. an example of the data would be:
    //$plotsTotal2 = array(111, 555);

    $test = array(111, 465, 555, 666, 777);

    if (count(array_intersect($plotsTotal2, $test)) > 0) {
     echo 'something'; <br/>
    }
}

所以 $plotsTotal2 是 3 个数组的组合。

例如,如果我有 3 个条目,则 while 语句将循环。 条目一有地块,111、222、465 条目二有地块,666、123、412 条目三有地块,000, 999

while 循环应该显示一些信息(可能是每个条目的名称和绘图),因此结果将是:

输入一 111,222,465 条目二 666、123、412

(条目三没有匹配的数字,因此没有显示任何内容)

任何帮助,希望我能解释这一切。

伊恩

【问题讨论】:

  • 有点不清楚您要完成什么。你能把这段代码简化成一个非常小的例子吗? (仅需要证明您的问题。看看sscce.org
  • array_filter 需要一个函数,该函数为您要保留的每个元素返回 true。还是您只是过滤掉 0 个值?

标签: php arrays if-statement while-loop


【解决方案1】:

这样的? Tested herethis while version

$entries = array(
    "111 222 465",
    "666 123 412",
    "000 999",
);

$test = array(111, 465, 555, 666, 777);

foreach ($entries as $key => $entry) {
    $plotsTotal1 = explode(' ', $entry);
    $plotsTotal2 = array_filter($plotsTotal1);

    $matches = array_intersect($test, $plotsTotal2);

    if (count($matches) > 0) {
        echo 'Entry ' . $key. ' contains ' . implode(',', $matches) . "\n";
    }
}

【讨论】:

  • 这只显示一个条目,例如有两个条目应该与测试数组中的内容匹配,但它只显示一个的信息。
  • 那我不清楚你想要什么。我放了一些东西online
  • 这是我卡住的地方。您的示例效果很好,但我没有像那样手动创建 $entries,我必须从数据库中获取它。我一直在使用 while 循环来遍历每个循环,但我不知道如何将它应用到您的示例中
  • 数据库的结果到底是什么?我的示例与while-version 非常相似。这不是问题。
  • 结果存储在一个由空格分隔的字段中。因此,例如该字段称为 exmainhallopenplottotals 并将包含 111 222 333(这相当于 3 个不同的地块)。目前大约有 30 个包含不同数字的单独条目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
相关资源
最近更新 更多