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

时间:2015-02-23 09:17:56

标签: php

我在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

1 个答案:

答案 0 :(得分:3)

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

您应该使用$strick的{​​{1}}参数来确保将'Z'视为字母。

但是,它会强制您在array_search中将整数值作为严格整数插入:

$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函数。