这个完全超出我的范围.我想比较两个字符串.当我回显它们时,它们似乎是相同的,但当我将它们与'=='运算符进行比较时,它返回false.例如,在我的数据库上运行下面的代码时.它输出的东西像"显然苹果不等于苹果".任何人都可以对此有所了解吗?
if ($this->data['list_text']) { //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++;
}
}
Run Code Online (Sandbox Code Playgroud)
尝试使用var_dump()而不是echo.
echo 'APPARENTLY '.$value2.' does not equal '.$value;
echo '<pre>Debug: ';
echo 'value='; var_dump($value);
echo 'value2='; var_dump($value2);
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)
它提供了额外的信息.例如实际类型.和弦的长度.
我同意奥拉维尔的观点。我删除了修剪并将其替换为 preg_replace 因为您假设 $value 和 $value2 是 companyID。如果 companyID 应该是字母数字、包含连字符等,您可以对这些进行快速修改...这个版本应该可以做到这一点:
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++;
}
}
Run Code Online (Sandbox Code Playgroud)