数组出现问题


Something wrong with array

我使用此代码获取第一个数字并将其替换为0-9,但我总是得到0-0-9的结果。然后我在数组9中删除了它,它开始正常工作。为什么会这样?

$direction = strtoupper(substr($query_row["Band"],0,1));
$replace = [
'0' => '0-9','1' => '0-9','2' => '0-9','3' => '0-9','4' => '0-9',
'5' => '0-9','6' => '0-9','7' => '0-9','8' => '0-9', '9' => '0-9' ];
$dir= str_replace(array_keys($replace), $replace, $direction); 

试试这个

$search = array('0','1','2','3','4','5','6','7','8');
$replace = array('0-9','0-9','0-9','0-9','0-9','0-9','0-9','0-9','0-9');
$dir = str_replace($search, $replace, $direction);

然后计算9,这取决于你的字符串我的是0123456789,所以我试过了$dir = str_replace('99', '9,0-9', $dir);

它在矿山上的工作

str_replace():的文档中对此进行了解释

注意

收到替换订单

因为str_replace()从左到右进行替换,所以在进行多次替换时,它可能会替换以前插入的值。

将数组作为前两个参数传递给str_replace()。这与对数组中的每个元素重复调用str_replace()的方法相同。

如果$direction不是'9',则它用'0-9'替换它。然后,在最后一个循环中,它将'0-9'中的'9'替换为'0-9'(根据您传递的值)。


我会把代码放在第一行后面,然后再读第一句话:"获取第一个数字并将其替换为0-9"

如果你的目标是获得$query_row["Band"]的第一个字符,如果它是一个数字,就用0-9代替它(否则就变成大写),我会写一些更简单的东西:

$direction = substr($query_row["Band"], 0, 1);
if (is_numeric($direction)) {
    $dir = '0-9';
} else {
    $dir = strtoupper($direction);
}