PHP从入门到精通(第5版)
上QQ阅读APP看书,第一时间看更新

7.9 查询数组中指定元素

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()函数最常见的应用是购物车,实现对购物车中指定的商品数量的修改和删除。