我有字符串:
$food="7:1,address:mandakini Pune,clusterid:1,email:s@gmail.com,mobile:950389,name:san,valid_order_id:FD1445853852";
我使用$items = explode ( ",", $food );
将此字符串拆分为','
当我试图读它时
for($i=0;$i < sizeof($items);$i++){
$jsonval= $items[$i];
$inneritems = explode ( ":", $jsonval );
$item1=$inneritems[0];
$item2=$inneritems[1];
echo '<br/>items '.$item1.":".$item2.'<br/>';
if($item1 !="clusterid" || $item1!="name" || $item1!="email" || $item1!="mobile" || $item1!="address" || $item1!="valid_order_id"){
echo 'hello '.$item1.":".$item2;
}
}
我得到以下输出:
items 7:1
hello 7:1
items address:mandakini Pune
hello address:mandakini Pune
items clusterid:1
hello clusterid:1
items email:s2@gmail.com
hello email:s@gmail.com
items mobile:950389
hello mobile:950389
items name:san
hello name:san
items valid_order_id:FD1445853852
hello valid_order_id:FD1445853852'
我的预期输出是:
items 7:1
hello 7:1
答案 0 :(得分:1)
如果
,请使用&&
代替||
$food="7:1,address:mandakini Pune,clusterid:1,email:s@gmail.com,mobile:950389,name:san,valid_order_id:FD1445853852";
$items = explode ( ",", $food );
for($i=0;$i < sizeof($items);$i++){
$jsonval= $items[$i];
$inneritems = explode ( ":", $jsonval );
$item1=$inneritems[0];
$item2=$inneritems[1];
// echo '<br/>items '.$item1.":".$item2.'<br/>';
if($item1 !="clusterid" && $item1!="name" && $item1!="email" && $item1!="mobile" && $item1!="address" && $item1!="valid_order_id"){
echo '<br/>items '.$item1.":".$item2.'<br/>';
echo 'hello '.$item1.":".$item2;
}
}
答案 1 :(得分:1)
if($item1 !="clusterid" || $item1!="name" || $item1!="email" || $item1!="mobile" || $item1!="address" || $item1!="valid_order_id"){
echo 'hello '.$item1.":".$item2;
}
应该使用&amp;&amp;。
if($item1 !="clusterid" && $item1!="name" && $item1!="email" && $item1!="mobile" && $item1!="address" && $item1!="valid_order_id"){
echo 'hello '.$item1.":".$item2;
}
实际上,如果你想要你的预期输出,你应该把
echo '<br/>items '.$item1.":".$item2.'<br/>';
也在if里面。现在你将获得7件物品和1件你好。
答案 2 :(得分:0)
使用此 -
if($item1 == 7 && $item2 == 1){
echo 'hello '.$item1.":".$item2;
}
OR
if($item1 !="clusterid" && $item1!="name" && $item1!="email" && $item1!="mobile" && $item1!="address" && $item1!="valid_order_id"){
echo 'hello '.$item1.":".$item2;
}
答案 3 :(得分:0)
if($item1 !="clusterid" || $item1!="name" || $item1!="email" || $item1!="mobile" || $item1!="address" || $item1!="valid_order_id"){
echo 'hello '.$item1.":".$item2;
}
这意味着如果该项目不是“clusterid”或该项目不是“名称”或该项目不是“电子邮件”等等< / p>
例如,如果项目是“clusterid”,则第一个条件为false,但第二个条件为true - 因为您使用了或操作数,它将满足真实条件。
使用和代替或:
if($item1 !="clusterid" && $item1!="name" && $item1!="email" && $item1!="mobile" && $item1!="address" && $item1!="valid_order_id"){
echo 'hello '.$item1.":".$item2;
}
答案 4 :(得分:0)
如果这是您的预期输出:
items 7:1
hello 7:1
您可能会考虑让代码更具可读性:
$filter = ['clusterid', 'name', 'email', 'mobile', 'address', 'valid_order_id'];
$items = explode(',', $food);
foreach($items as $value) {
$innerItems = explode (':', $value);
if (!in_array($innerItems[0], $filter)) {
echo 'items ' . $innerItems[0] . ':' . $innerItems[1] . '<br>'
. 'hello ' . $innerItems[0] . ':' . $innerItems[1] . '<br>';
}
}
使用in_array
似乎比长逻辑表达式更容易维护和更好阅读。另请注意,只有在未确定值7:1
的位置时才需要循环。
答案 5 :(得分:0)
问题是你用冒号(:)分割每个项目。 要获得您当前正在检查的值,您需要按空格分割第一部分(冒号前),然后取第二部分。
其他方面,这条线是:
items clusterid
而不是
clusterid
这是你要检查的内容。
另外,将第一个echo移动到if语句中。
试试这个:
for($i=0; $i < sizeof($items); $i++){
$jsonval= $items[$i];
list($item1, $item2) = explode(":", $jsonval);
list($part1, $part2) = explode(" ", $item1);
$badArray = array('clusterid', 'name', 'email', 'mobile', 'address', 'valid_order_id');
if(!in_array($part2, $badArray)){
echo '<br/>items '.$item1.":".$item2.'<br/>';
echo 'hello '.$item1.":".$item2;
}
}