Comparing two identical strings returns false in PHP
cakephp, php
Solution
I agree with Olafur. I removed trim and replaced it with a preg_replace due to the fact you are assuming $value and $value2 are companyIDs. You can make a quick modification on these if the companyID is supposed to be alphanumeric, contain hyphens, etc... This version should do it:
if ($this->data['list_text']) {
$list = nl2br($this->data['list_text']);
$list_array = explode('<br />', $list);
$ranking = 1;
$company_array = $this->CompanyList->CompanyRanking->Company->find('list',null);
foreach ($list_array as $key => $value) {
// remove any non digit characters
$value = preg_replace('/[^0-9]/i','', $value);
$companyId = null;
foreach ($company_array as $key2 => $value2) {
// remove any non digit characters
$value2 = preg_replace('/[^0-9]/i','', $value2);
if ($value2 != $value) {
echo 'values not equal';
} else {
$companyId = $key2;
break;
}
}
$this->data['CompanyRanking'][$ranking]['ranking'] = $ranking;
$this->data['CompanyRanking'][$ranking]['company_id'] = $companyId;
$ranking++;
}
}
Problem
I'm trying to compare two strings. When I echo them, they appear to be identical, yet when I compare them with the '==' operator, it returns false. For example, when running the code below on my database. It outputs things like "APPARENTLY Apple does not equal Apple". What is the reason? ``` if ($this->data['list_text']) { // The user has entered into textarea $list = nl2br($this->data['list_text']); $list_array = explode('<br />', $list); $ranking = 1; $company_array = $this->CompanyList->CompanyRanking->Company->find('list', null); // This is the comparison bit foreach ($list_array as $key => $value) { $companyId = null; foreach ($company_array as $key2 => $value2) { if ($value2 != $value) { echo 'APPARENTLY ' . $value2 . ' does not equal ' . $value; } else { $companyId = $key2; break; } } $this->data['CompanyRanking'][$ranking]['ranking'] = $ranking; $this->data['CompanyRanking'][$ranking]['company_id'] = $companyId; $ranking++; } } ```