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