php二维数组中判断是不是存在元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php二维数组中判断是不是存在元素相关的知识,希望对你有一定的参考价值。

现在有个detail.php的文件是显示商品的,然后我让里面接收用户选择的颜色和填写的数量,$lmbs=$_GET['id'];//商品id $selectedColor=$_POST['selectedColor'];//颜色 $quatity=$_POST['quatity'];//数量。然后再存到$Arr4这个二维数组中,现在的问题就是我要用户把商品提交购物车的时候判断这时候提交的商品id,color是否已经存在$Arr4中,如果存在则不添加商品id和颜色,只把原来的数量和用户新提交的数量相加即可,
我试过用
foreach($Arr4 as $key=>$value)
if($value[0]==$lmbs && $value[1]==$selectedColor)
echo "<script>alert('已经有相同的颜色了');</script>";//我随便先提示下
但是这个只能判断一次,就像我比如提交了一个id=a,color=red的商品,然后提交id=b,再提交id=a,color=red的时候就无法判断了
这里面写呢?求解下,谢谢

参考技术A 可以使用 $lmbs= isset($_GET['id']) ? (int) $_GET['id'] : 0;

isset($_SESSION['Arr4'])) 或 empty($_SESSION['Arr4']);
=================================================
相加你可以这样做:
$sid = isset($_SESSION['id']) ? $_SESSION['id'] : 0;
$id = $id + $sid;
$_SESSION['id'] = $id;本回答被提问者采纳
参考技术B 每一次提交数据到detail.php,就是重载detail.php,$Arr4都是空的。$Arr4应该换成session或cookie来保存追问

是的 $Arr4会存到session里,只是这里我略过没说。重点就是怎么判断id和color

参考技术C 判断下标是否大于等于数组长度
数组:string[][]
s
=
new
string[10][20]
获取第一维长度:s.length
获取第二维长度:s[0].length
参考技术D 肯定是你每次在往session里存信息的时候没有把之前的$Arr4继承下来呗……追问

不是的,继承了,就是在判断的时候不会历练整个数组,而是在foreach只执行一次的结果

追答

那我自己写个DEMO看看先……

第5个回答  2012-08-28 in_array对数组的值进行判断是否存在追问

我有试过,in_array不能判断二维,我就把$Arr4 foreach循环了,然后把in_array放在里面判断,但是这样也只能在foreach里面一次,就像我上面说的那样,但提交了一个id=1,color="red";再提交一个id=2,color="blue";如果在提交回第一个id=1,color="red"是不会判断的。

追答

二维数组先把他弄成一维的咯

追问

你的意思是这样吗?
foreach($Arr4 as $key=>$value)
if(in_array($lmbs,$value[0]))
............


但是这样只能在数组$Arr4中判断一次,不能历练整个数组

js中一个二维数组怎么判断某一固定列中是不是存在某值,要最优算法?

比如var array= [["122928002", "201048003,50025899"],["122928002", ",50023172"],["122928004", ",50023172"]]
因为我的array是动态添加的,可以不用for来判断array第一列,相同的话我会相加的,结果返回 newarray=[["122928002201048003,50025899,50023172"],["122928004", ",50023172"]]

var array = [["122928002", "201048003,50025899"], ["122928002", ",50023172"], ["122928004", ",50023172"]];
var newarray = array.filter((e,i,a)=>
var i1=a.findIndex(e1=>e1[0]==e[0]);
if(i1<i)
a[i1][1]+=a[i][1];
return false;

return true;
);
console.log(newarray);追问

在aspx上不适用=>这个怎么转呀

参考技术A 可以用数组的indexOf函数,方法arr.indexOf(find,start);find:要找的内容,必须;start:查找开始下标,可选;返回:查找数据所在的下标,如果没找到,返回-1 如果只要知道是否有8这个数字,直接调用arr.indexOf(8),如果返...

以上是关于php二维数组中判断是不是存在元素的主要内容,如果未能解决你的问题,请参考以下文章

php 怎么在二维数组中查看一个值是不是存在

js中一个二维数组怎么判断某一固定列中是不是存在某值,要最优算法?

剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组

php显示判断数组是不是带下标的二维数组

PHP中怎么从一个二维数组中随机取出一个值?

PHP 两个二维数组求交集