【问题标题】:PHP: How to print row of multidimensional array with conditionsPHP:如何打印带有条件的多维数组行
【发布时间】:2020-12-14 14:05:17
【问题描述】:

我是 PHP 初学者。我想根据特定条件打印行。例如,我有一组来自 SQL-Query 的数据(如下所示),我想仅在 Type = 210 和 Category = J 时打印 [Series no] 的所有行。我知道应该在此使用“foreach”循环情况,但我不知道怎么做。

这就是我尝试过的。我知道这是错误的,但正如我所说,我是初学者和自学。

$get_data = sqlsrv_query($connde, $mainquery);

$data_array = [];
while ($row = sqlsrv_fetch_array($get_data, SQLSRV_FETCH_ASSOC)) {
    $data_array[$row["Type"]][$row["Category"]][$row["Series No"]][$row["End Date"]];
}


foreach ($data_array as $value1) {
    if ($value1 = 210) {
        foreach ($value1 as $value2) {
            if isset($value2 == 'J')
            echo "<td>" . $row["Series No"] . "</td>";

        }
    }
}

【问题讨论】:

  • while 中的行没有执行任何操作,是否要将其分配给某个 var?
  • $value1 = 210分配号码,你要$value1 == 210比较
  • SELECT * FROM SeriesNo WHERE Type = 235 AND Category = 'J' 然后您只需打印所有返回的内容,无需在循环中进行过滤。
  • @AbraCadaver 是的,我愿意,但那是另一种情况。
  • 好的,那么就像上面提到的@AbraCadaver。你的 while 循环什么也没做。 @brombeer 对您的 if 的评论也需要更正。

标签: php arrays sqlsrv


【解决方案1】:

你可以直接处理行:

<?php
$mainquery = 'SELECT `Type`, `Category`, `Series No`, `End Date` FROM `Foo`'; 
$get_data  = sqlsrv_query($connde, $mainquery);

while ($row = sqlsrv_fetch_array($get_data, SQLSRV_FETCH_ASSOC)) {
    if($row['Type'] == 210 && $row['Category'] == 'J') {
        echo "<td>" . $row['Series No'] . "</td>";
    }
}

【讨论】:

  • 天哪!完美的!谢谢 :) 没想到这么简单!
  • 否则,如果您以后需要这些行,或者您正在将数据传递给另一个数组:$data[] = $row;
  • 如果我像你说的那样分配另一个数组:$data[ ]= $row,我以后如何定义函数?我还能用if($row['Type'] == 210 &amp;&amp; $row['Category'] == 'J')吗?还是我需要别的东西?
  • @anis 我只提到了它,因为有时数据会传递到视图,或者从一个函数传递到另一个函数。您只需像行一样循环 $data。
  • 我知道您的意图是这样的,但是您发布的 while 循环的主体很混乱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 2012-12-10
  • 2014-06-13
相关资源
最近更新 更多