【问题标题】:PHP scripting with loops, elseif statements带有循环、elseif 语句的 PHP 脚本
【发布时间】:2011-03-22 11:59:36
【问题描述】:

如果有人能和我说话,也许能给我指明一个方向。如果我有一个理解它的人指导我,我可以与之交谈,我会更好地工作。我不要求为我完成它。谢谢

下面的数组代表了一家小公司的库存商品的商品编号。

$inventory = array ("ABC123X","TWX325R","NPR779N","PUY343S","MIS394A","RSE874W","WER343P");

表格:
编写一个 HTML 表单,该表单接受库存编号的单个文本输入。 (已经完成:将在脚本中使用$item = $_POST["item"];

PHP 脚本:编写一个搜索数组的 PHP 脚本。

如果商品有库存(在数组中),则打印商品库存消息。

如果该项目没有库存(不在数组中),则打印该项目没有库存消息。

提示:

  1. 使用 foreach 循环在数组中搜索用户发送给您的数据。使用顺序搜索。 (例如:比较第一个项目,然后是下一个,然后是下一个,直到找到您正在寻找的项目。)

  2. 您需要在循环中嵌套一个 if 语句,因为并非每个项目都会匹配。

  3. 创建一个标志变量来跟踪是否找到了一个项目。在程序开始时设置 $flag = false。仅当找到该项目时才将 $flag 设置为 true。在程序结束时,测试 $flag 以确定是否需要显示 item not in stock 消息。

我有以下内容,但我正在尝试弄清楚如何将它们组合在一起。我基本上是在几乎没有信息的情况下自己做这件事,并尝试用谷歌搜索它

<?php

$item = $_POST["item"];
$inventory = array("ABC123X","TWX325R","NPR779N","PUY343S","MIS394A","RSE874W","WER343P")
$flag = false

foreach ($item as $inventory)

if ($flag == true)
 print "<font size=+3><b>ACME Hardware Store</b></font><br><br>";
 print "We have item $item in stock! Feel free to contact us for more info.";
else
if ($flag == false)
 print "<font size=+3><b>ACME Hardware Store</b></font><br><br>";
 print "That item not in inventory! Please contact us if you would like to special     order it.";

?>

【问题讨论】:

  • 我没有看到价格。您为为您工作的人提供了多少?
  • 我不想为我完成工作,我需要了解循环的人来解释事情的工作原理并为我指明方向。
  • 您的ifforeach 语法不正确,应该会触发错误(为什么不提?)。仔细阅读ru2.php.net/manual/en/control-structures.if.php + ru.php.net/manual/en/control-structures.foreach.php
  • @Tara Beth:这是作业吗?如果是这样 - 请用homework 标签标记问题。您可以在我上面给出的链接中了解foreach 的工作原理。
  • 我喜欢人们这样做if(x == true),只要写if($flag)就足够了……哈哈,不需要过度比较,你的if最终是if(true)。你现在正在这样做:if(true == true)

标签: php scripting


【解决方案1】:

如果您需要检查物品是否在库存数组中,请尝试。或者,如果您应该使用 foreach,请查看 php 手册中的语法

if(in_array($item,$inventory)){
print "<font size=+3><b>ACME Hardware Store</b></font><br><br>";
 print "We have item $item in stock! Feel free to contact us for more info.";
}
else
{
 print "<font size=+3><b>ACME Hardware Store</b></font><br><br>";
 print "That item not in inventory! Please contact us if you would like to special     order it.";


}

【讨论】:

  • 这是最短、更正确的方法。然而,Nican 的方法更多地使用了提供的有关如何操作的提示,但它们只是提示。
  • 我还没有学会 in_array。我的笔记里没有。我很感谢你的帮助。我将查看 Nican 提供的链接,以便在上课时尝试熟悉它
  • in_array() 本质上是做到这一点的捷径。它对其中的每个循环都有一个隐含的含义,因为它遍历并根据提供的搜索字符串或变量检查数组的每个元素,如果它在数组中则返回 true。还有array_search(),它的工作方式相同,但如果它不在数组中则返回false,如果它在数组中则返回项的数组键。还有array_keys(),它可以以几乎相同的方式提供一个搜索字符串,如果它们包含变量/字符串/whatever,则返回一个键数组。
【解决方案2】:

这听起来太简单了,但我相信你只是在寻找 in_array 函数。

http://us3.php.net/manual/en/function.in-array.php

但如果你真的想按照自己的方式去做,我相信这是正确的方式:

foreach( $inventory as $inv_item ){
   if( $inv_item == $item ){
      $flag = true;
      break;
   }
}

if( $flag == true ) {
   ...
} else {
   ...
}

【讨论】:

  • 你为什么不做($inventory as $item)?我正在努力理解,以便将来我能认出它
  • 在 foreach 循环中调用变量无关紧要。在这种情况下,$item 已设置为 $item = $_POST["item"];,因此 foreach($inventory as $item) 将不起作用。此外,您的问题中的foreach ($item as $inventory) 将不起作用,因为 $item 不是数组,$inventory 是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多