PHP从入门到精通(第4版)(软件开发视频大讲堂)
上QQ阅读APP看书,第一时间看更新

7.9 查询数组中指定元素

视频讲解:光盘\TM\lx\7\09 查询数组中指定元素.mp4

array_search()函数用于在数组中搜索给定的值,找到后返回键名,否则返回false。在PHP 4.2.0之前,函数在失败时返回null而不是false。

语法格式如下:

        mixed array search ( mixed needle, array haystack [, bool strict])

其中,needle指定在数组中搜索的值;haystack指定被搜索的数组;strict为可选参数,如果值为true,还将在数组中检查给定值的类型。

【例7.12】本例综合应用数组函数实现更新数组中元素的值,实例代码如下:(实例位置:光盘\TM\sl\7\12)

        <?php
          $name = "智能机器人@数码相机@天翼3G手机@瑞士手表"; //定义字符串
          $price ="14998@2588@2666@66698";
          $counts = "1@2@3@4";
          $arrayid=explode("@", $name);                         //将商品ID的字符串转换到数组中
          $arraynum=explode("@", $price);                       //将商品价格的字符串转换到数组中
          $arraycount=explode("@", $counts);                    //将商品数量的字符串转换到数组中
          if(isset($_POST['Submit']) && $_POST['Submit']==true){
              $id=$_POST['name'];                               //获取要更改的元素名称
              $num=$_POST['counts'];                            //获取更改的值
              $key=array_search($id, $arrayid);                 //在数组中搜索给定的值,如果成功则返回键名
              $arraycount[$key]=$num;                           //更改商品数量
              $counts=implode("@", $arraycount);                //将更改后的商品数量添加到购物车中
          }
        ?>
        <table width="580" border="1" cellpadding="1" cellspacing="1" bordercolor="#FFFFFF" bgcolor="#c17e50">
            <tr>
                <td width="145"align="center"bgcolor="#FFFFFF"  class="STYLE1">商品名称</td>
                <td width="145"align="center"bgcolor="#FFFFFF"  class="STYLE1">价格</td>
                <td width="145"align="center"bgcolor="#FFFFFF"  class="STYLE1">数量</td>
                <td width="145"align="center"bgcolor="#FFFFFF"  class="STYLE1">金额</td>
            </tr>
          <?php
            for($i=0; $i<count($arrayid); $i++){                 //for循环读取数组中的数据
          ?>
          <form name="form1_<?php echo $i; ?>" method="post" action="index.php">
            <tr>
              <td height="25" align="center" bgcolor="#FFFFFF" class="STYLE2"><?php echo $arrayid[$i]; ?></td>
              <td align="center" bgcolor="#FFFFFF" class="STYLE2"><?php echo $arraynum[$i]; ?></td>
              <td align="center" bgcolor="#FFFFFF" class="STYLE2">
                  <input name="counts" type="text" id="counts" value="<?php echo $arraycount[$i]; ?>" size="8">
                  <input name="name" type="hidden" id="name" value="<?php echo $arrayid[$i]; ?>">
                  <input type="submit" name="Submit" value="更改"></td>
              <td align="center" class="STYLE2"><?php echo $arraycount[$i]*$arraynum[$i]; ?></td>
            </tr>
          </form>
          <?php
            }
          ?>
      </table>

在本例中,实现对数组中存储的商品数量进行修改,其运行结果如图7.4所示。

图7.4 更新数组中元素的值

说明

array_search()函数最常见的应用是购物车,实现对购物车中指定的商品数量的修改和删除。