我有一个for循环,用于检查存储在数据库中的数字。 数据存储为字符串,然后在php中拆分。 下面的代码应仅返回该大小的库存量。它看起来应该有效。 数据存储在数据库中,如下所示:
尺寸,数量_ * _尺寸,数量:等等
我首先拆分数组:
$result = mysql_fetch_assoc($get);
$sizes = explode('_*_',$result['sizes']);
相当直接的前行,然后它被砍掉并分裂
for($x = 0; $x < count($sizes); $x){
$current_size = explode(',',$sizes[$x]);
if($size === (int)$current_size[1]){
$stock = $current_size[1];
//do something with matched data
$x = count($sizes);
}else{
$x++;
}
}
但它永远不会匹配数据。 我已经在这几个小时了,我一无所获。 这就是整个事情:
$result = mysql_fetch_assoc($get);
$sizes = explode('_*_',$result['sizes']);
//check stock of each size
$size = (int)substr($size,6,2); //origal string from POST Size :x
$stock = 0;
for($x = 0; $x < count($sizes); $x){
$current_size = explode(',',$sizes[$x]);
echo $size.'='.$current_size[1].'.';
if($size === (int)$current_size[1]){
$stock = $current_size[1];
echo 'found it';
$x = count($sizes);
}else{
$x++;
}
echo $size.'='.$current_size[1].' ';
}
echo $stock;
如果它有助于这是数据库中存储的数据: 4,10 _ * 6,14 * _ 8,0 _ * 10,3 * _ 12,0 _ * _ 14,2
数据被格式化以匹配爆炸函数,但它在这里发生了变化。
答案 0 :(得分:2)
据我所知,大小应该在$ current_size [0]中,而不是像你的代码中的$ current_size [1]。
试试这个:
$result = mysql_fetch_assoc($get);
$sizes = explode('_*_',$result['sizes']);
//check stock of each size
$size = (int)substr($size,6,2); //origal string from POST Size :x
$stock = 0;
for($x = 0; $x < count($sizes); $x){
$current_size = explode(',',$sizes[$x]);
echo $size.'='.$current_size[0].'.';
if($size === (int)$current_size[0]){
$stock = $current_size[1];
echo 'found it';
$x = count($sizes);
}else{
$x++;
}
echo $size.'='.$current_size[0].' ';
}
echo $stock;
答案 1 :(得分:1)
您的=
声明中有三个if
运算符
if($size === (int)$current_size[1]){
我不知道是否仅使用两个(==
)会改变任何东西。如果不是,你也可以尝试为$size
变量
答案 2 :(得分:1)
您的问题很可能是if
语句中使用的strict comparison operator:
if($size === (int)$current_size[1]){
你在评论中说过:
$size = mysql_real_ecape($_POST['size']); // assumed this is a typo in your comment not code
可能$size
来自$_POST
和mysql_real_escape_string
(已弃用,使用mysqli
)作为字符串,而您将它与整数进行比较。
...严格比较运算符比较变量类型以及内容,所以你在伪说:
if( [string - size] is equal to [int - current size] )
所以试试这个:
if((int)$size === (int)$current_size[1]){ // cast $size as integer also
......或
if($size == $current_size[1]){ // type juggle while comparing