2011-05-04 100 views
0

我写了一个程序,它从csv中读取数据(在SQL Studio中保存为Unicode格式),然后做一些比较并打印出结果。if statement not reading variables

出于某种原因,这个简单的if语句返回数据时打印它显示正确的结果假eventhough:

foreach ($complete as $key => $val){  
    $INVOICE = 'INVOICE'; 
    $InvoiceType = $complete[$key][9]; 
    echo 'comparing' . $InvoiceType.'to'. $INVOICE; 
     if ($InvoiceType == $INVOICE){ 
    echo 'I am inside a invoice'; 
    } 
    else if ($InvoiceType == 'CREDIT'){ 
    $PayeeDocumentType = 'CM';echo 'I am inside a credit'; 
    } 
    } 

--------- Results --------- 
comparingINVOICEtoINVOICEcomparingINVOICEtoINVOICE 
+4

结果看起来不正确。它如何回声“比较INVOICEtoINVOICE”两次? – 2011-05-04 19:02:24

+2

请粘贴var_dump($ InvoiceType)的输出;' – Dogbert 2011-05-04 19:02:25

+0

你可以'var_dump'' $ complete'? – Neal 2011-05-04 19:04:46

回答

0

猜先尝试

$InvoiceType = trim($complete[$key][9]); 

另外还要注意的var_dump输出中的“查看源文件”这一页。基本上看到原始输出带给浏览器,也许有一些隐形角色在那里。

+0

哇!谢谢!你救了我! – MG1 2011-05-04 21:41:44

1

我唯一的猜测是,$complete[$key][9]是一个对象,而不是一个字符串。

如果添加print_r($complete[$key][9])某处或修改代码以2号线会发生什么:

$InvoiceType = (string) $complete[$key][9]; 
+0

print_r($ complete [$ key] [9])打印“INVOICE”。我也做了gettype,它返回“string” – MG1 2011-05-04 19:21:06