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++; } } ```

Original source

Related problems