【问题标题】:Getting Multiple Values From Array从数组中获取多个值
【发布时间】:2017-10-10 08:25:59
【问题描述】:

希望我能正确解释。

我的代码中有

$eng[] = "All";
$eng[] = "engine_Sigma";
$eng[] = "engine_K-Series";
$eng[] = "engine_Duratec";
$eng[] = "engine_Suzuki";
$eng[] = "engine_Vauxhall";
$eng[] = "engine_Crossflow";

// query your db
$itemsq = mysqli_query($con,"SELECT * FROM `crm`.`workshop-items` LIMIT 0,100");
$items = mysqli_fetch_assoc($itemsq);
// do/while? should prob just use a while loop
do {
    $enginetype = explode(":", $items['engineid']);

    foreach ($enginetype as $key) {
        echo "$items[wsiid] - $items[code] - $items[incvat] - $eng[$key] <br>
";
    }

} while ($items = mysqli_fetch_assoc($itemsq)); 

但是在数据库中,engineid 存储为例如 1:3:6 甚至 1:2:3:4:5:6 现在我想要做的是如果有多个值并且它们已被拆分, 而不是它只是回显第一个项目,然后再次回显下一个 id 的数据 (像这个 WSIID - CODE INCVAT engine_K-Series )等等 我想做显示(WSIID - CODE - INCVAT - engine_Sigma engine_K-Series) 如果 $eng 是 1 & 3 ( 1:3)

希望你能明白我的意思

谢谢大家

【问题讨论】:

    标签: php arrays explode


    【解决方案1】:

    您应该在foreach 循环之外回显数据的第一部分,并仅在foreach 内回显引擎类型:

    <?php
    $eng[] = "All";
    $eng[] = "engine_Sigma";
    $eng[] = "engine_K-Series";
    $eng[] = "engine_Duratec";
    $eng[] = "engine_Suzuki";
    $eng[] = "engine_Vauxhall";
    $eng[] = "engine_Crossflow";
    
    // query your db
    $itemsq = mysqli_query($con,"SELECT * FROM `crm`.`workshop-items` LIMIT 0,100");
    //$items = mysqli_fetch_assoc($itemsq); # you should delete this, see my explanation below
    // do/while? should prob just use a while loop
    do {
        $enginetype = explode(":", $items['engineid']);
    
        echo "$items[wsiid] - $items[code] - $items[incvat] - ";
        foreach ($enginetype as $key) {
           echo "$eng[$key] ";
        }
        echo "<br />";
    
    } while ($items = mysqli_fetch_assoc($itemsq)); 
    

    您应该删除$items = mysqli_fetch_assoc($itemsq); 的第一次执行,否则您的do...while 循环将从第二次迭代开始。

    【讨论】:

    • 试试while而不是do... while,前者在检查条件后执行循环,而后者执行循环,然后检查条件。因此,如果您的查询没有结果,do...while 仍将执​​行一次循环。
    • 刚改成 while ($items = mysqli_fetch_assoc($itemsq)) { $enginetype = explode(":", $items['engineid']); echo "$items[wsiid] - $items[code] - $items[incvat] -"; foreach ($enginetype as $key) { echo "$eng[$key] "; } 回声“
      ”; } ;现在效果很好!谢谢罗伯托!
    • 如何将 $eng[$key] 中的所有相关值分配给变量,例如 $test,以便在我回显 $test 时显示所有值?
    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2014-04-21
    相关资源
    最近更新 更多