[英]if else condition not working with array values in php
我來到這個奇怪的問題。
我從數組中獲取值並嘗試比較它但它不起作用。
代碼1
<?php
echo $data->item[0]['promocode'].'<br>';
echo $data->item[1]['promocode'];
?>
輸出-1
inhouse
inhouse
現在讓我們嘗試使用if else條件,如果兩個值相同或不是Code-2
<?php
if(($data->item[0]['promocode']) == ($data->item[1]['promocode'])){
echo "both values are same";
} else {
echo "both values are NOT same";
}?>
輸出-2
both values are NOT same
很奇怪
讓我們嘗試上面的exaple指定變量Code-3
<?php
$data0=$data->item[0]['promocode'];
$data1=$data->item[1]['promocode'];
if($data0 == $data1){
echo "both values are same";
} else {
echo "both values are NOT same";
}?>
輸出-3
both values are NOT same
我現在正拉着我的頭發。
現在硬編碼變量中的值
碼4
<?
$data0='inhouse';
$data1='inhouse';
if($data0 == $data1){
echo "both values are same";
} else {
echo "both values are NOT same";
}?>
輸出-4
both values are same
所以我的問題是為什么會發生這種情況?
我有元素數組,我想用當前值檢查以前的值,如果嘗試然后做一些事情。
謝謝你的時間。
假設兩個條目都是字符串(如您的第一個代碼示例所示),我的猜測是您的條目具有不等的前導和/或尾隨空格。 首先嘗試對它們進行標准化,例如
if (trim($data->item[0]['promocode']) == trim($data->item[1]['promocode']))
要查看正在發生的情況,請嘗試將您的第一個示例修改為
<?php
printf('<pre>"%s"%s"%s"</pre>',
$data->item[0]['promocode'],
PHP_EOL,
$data->item[1]['promocode']);
?>
試試這樣吧
<?php
if(($data->item[0]['promocode']) === ($data->item[1]['promocode'])){
echo "both values are same";
} else {
echo "both values are NOT same";
}
?>
或者你可以使用
strcmp($data->item[0]['promocode'],$data->item[1]['promocode']);
我也使用strlen($ var)進行調試......
<?php
if( strlen($data->item[0]['promocode']) == strlen($data->item[1]['promocode']) ){
if(($data->item[0]['promocode']) == ($data->item[1]['promocode'])){
echo "both values are same";
}
else {
echo "both values are NOT same";
}
}
else{
echo 'ther are different because
strlen($data->item[0]["promocode"]='.strlen($data->item[0]['promocode']).' and
strlen($data->item[1][|promocode"]) = '. strlen($data->item[1]['promocode']);
}
?>
嘗試使用非類型化的條件語句===來查看它們是否是相同的類型。 或者對於調試perposes顯示變量類型,以確保您不會意外地有一些NULL對象或其他奇怪的數據類型。
if($data0 !== $data1) echo gettype($data0).' !== '.gettype($data1);
這應該可以幫助您找出您實際比較的內容。 另一種選擇是使用var_dump($data);
實際上一起顯示變量。 看看數據類型是否存在一些差異。 它應該可以幫助您確定您的對象實際上是否正確填充。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.