PHP中的Array_search返回26作为索引36-61中值的Key


Array_search in PHP returning 26 as Key for values in index 36-61

我在PHP中使用Array_search编写一个函数,类似于C/C++:atoi,但使用不同的基本系统。我正在传递一个字符串,array_Search将返回26作为索引36-61中值的Key。这是代码。

$mergeArr = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z'));
$newArr = str_split('dz7A');
$intArr = array();
foreach($newArr as $s) {
    $k = array_search($s, $mergeArr);
    print_r($k);
    array_push($intArr, $k);
}

返回输出:3 25 33 26

预期输出:3 25 33 36

36因为A是array_index 26

PHP中的任何字符串在'string' == 0上都将返回true,因此您可以将第一个0与索引26匹配。

您应该使用array_search$strick参数来确保"Z"被视为一个字母。

但是,它强制您将整数值作为严格整数插入$newArr中:

$mergeArr = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z'));
$newArr = array('d', 'z', 7, 'A'); // 7 instead of '7'
$intArr = array();
foreach($newArr as $s) {
    $k = array_search($s, $mergeArr, true); // $strict = true instead of default false
    print_r($k);
    array_push($intArr, $k);
}

输出:

3 25 33 36

否则,您将不得不编写自己的类似array_search的函数。