array_search的问题

drs*_*ltz 0 php

当我运行以下内容时,我会得到'B.C.',但我想要得到'BC'.

array_search打算做一个严格的比较,为什么不回来"BC"

如果我通过"Alberta",我知道"AB",这是正确的.

<?
function cleanProvince($province)
{
    $values = array(
        'AB' => 'Alberta',
        'BC' => 'B.C.',
        'BC' => 'British Columbia',
        'ON' => 'Ontario',
        'ON' => 'Onatrio',
        'ON' => 'Ont',
        'NS' => 'Nova Scotia',
        'QC' => 'Quebec'
    );
    if ($key = array_search(@$province, $values, true)) {
        return $key;
    } else {
        return $province;
    }
}
echo (cleanProvince("B.C."));
?>
Run Code Online (Sandbox Code Playgroud)

Roc*_*mat 7

您不能在一个阵列中拥有多个键.当你这样做时,第二个会覆盖第一个.

$values = array(
    'AB'=>'Alberta',
    'BC'=>'B.C.',
    'BC'=>'British Columbia', # Overrides 'B.C.'
    'ON'=>'Ontario',
    'ON'=>'Onatrio', # Overrides 'Ontario'
    'ON'=>'Ont', # Overrides 'Onatrio'
    'NS'=>'Nova Scotia',
    'QC'=>'Quebec',
);
Run Code Online (Sandbox Code Playgroud)

你传递"B.C."cleanProvince.那不是$values,所以array_search返回false,因此cleanProvince返回"B.C.".