【问题标题】:Check if variable contents exist in array displayed in table?检查表中显示的数组中是否存在变量内容?
【发布时间】:2012-02-06 01:09:53
【问题描述】:

我正在创建一个内部订单拉取应用程序。我正在提取一个 ODBC 源并将项目放入一个数组中。然后,我将为每个实际处理的订单创建一个新的平面文件。当用户扫描/输入来自该订单号的商品时,它会将该商品放在已创建的订单文件中的新行中。

然后我正在读取该订单文件以获取迄今为止已扫描的商品。我卡住的地方是如何将订单文件中存在的行项目标记为在 HTML 表中完成。

这是与我的问题相关的相关代码:

$file_array = file_get_contents($file_ordnumber, "rb");
$items_array = explode("\n",$file_array);

echo "<table>";

for ($i = 0; $i < count($location_array); $i++)
{
    echo "<tr>";
    if (in_array("$itemno_array[$i]", $items_array)) {
        echo "<td>$itemno_array[$i] EXISTS</td>";
    }
    else {
        echo "<td>$itemno_array[$i] NO EXIST</td>";
    }
//  echo "<td>$location_array[$i]</td>";
    echo "<td>$qty_array[$i]";
    echo "<td>$pickingseq_array[$i]</td>";
    echo "</tr>";
}

echo "</table>";

如您所见,我正在遍历数组并将其显示在 HTML 表格中。我很好奇为什么我上面的代码不起作用。我的结果最终来自“else”语句,因此所有行,即使它们存在于文件中,也显示为“NO EXIST”,这显然是不正确的。

【问题讨论】:

  • 为什么将包含纯文本的变量称为“文件数组”?
  • 这只是我为变量选择的名称,因为我最终会将文件的内容放入数组中。

标签: php arrays loops html-table


【解决方案1】:

你能发布你的 Print_r($items_arr); 也尝试使用 isset($arrayVar[$key] 并尝试删除双引号,看看它是否有效......就像......

$file_array = file_get_contents($file_ordnumber, "rb");
$items_array = explode("\n",$file_array);

echo "<table>";

for ($i = 0; $i < count($location_array); $i++)
{
    echo "<tr>";
    if (in_array($itemno_array[$i], $items_array)) {
        echo "<td>".$itemno_array[$i]." EXISTS</td>";
    }
    else {
        echo "<td>".$itemno_array[$i]." NO EXIST</td>";
    }
//  echo "<td>".$location_array[$i]."</td>";
    echo "<td>".$qty_array[$i]."";
    echo "<td>".$pickingseq_array[$i]."</td>";
    echo "</tr>";
}

echo "</table>";

【讨论】:

  • 删除双引号不起作用。这是您请求的输出: Array ( [0] => 49-51 [1] => 8M-16740 [2] => )
  • 顺便说一句,使用 isset 给了我相反的结果......它告诉我所有项目都存在。也许 count 变量在这里不能正常工作?
  • 除此之外,应该注意数组中的键不匹配。我只想搜索值而忽略键。键在表中很重要,因为我从数据库中提取并按特定顺序需要它们,但为了比较数组,我只想查看值。为本示例从数据库创建的完整数组:Array ( [0] => 8M-16740 [1] => 8A-7650358-PR [2] => 8BA-8349 [3] => 1BA-8344 [4] => 0A-7651338-PR [5] => 49-51 [6] => [7] => )
【解决方案2】:

我通过不同的方式解决了这个问题。我使用 strpos() 来搜索平面文件本身,而不是从中分解出来的数组:

echo "<table>";

//for ($i = 0; $i < count($itemno_array); $i++)
for($i=0;$i<sizeof($itemno_array);$i++)
{
    echo "<tr>";
//  if (in_array($itemno_array[$i], $items_array)) {
    echo "<td>";
    $var = $itemno_array[$i];
    $newvar = trim($var);
    if(strpos($file_array, $newvar ) !==FALSE) {
        echo "$var ** EXISTS</td>";
    }
    else {
        echo "$var DOES NOT EXIST **</td>";
    }
//  echo "<td>$location_array[$i]</td>";
    echo "<td>$qty_array[$i]";
    echo "<td>$pickingseq_array[$i]</td>";
    echo "</tr>";
}

echo "</table>";

【讨论】:

    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 2011-12-25
    • 2015-02-21
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 2017-02-13
    • 2011-12-19
    相关资源
    最近更新 更多