簡體   English   中英

if else條件不能在php中使用數組值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM