我正在使用此代码获取第一个数字并将其替换为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);
答案 0 :(得分:2)
尝试这个
$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);
它在我的工作
答案 1 :(得分:1)
在str_replace()
的文档中对此进行了解释:
<强>注意强>
替换订单问题
由于
str_replace()
从左到右替换,因此在执行多次替换时,它可能会替换以前插入的值。
将数组作为前两个参数传递给str_replace()
。这与您为数组中的每个元素重复调用str_replace()
相同。
如果$direction
不是'9'
,则会将其替换为'0-9'
。然后,在最后一个周期,它将'9'
替换为'0-9'
'0-9'
(根据您传递的值)。
我会在第一行之后删除代码并再次阅读第一句话:&#34;获取第一个数字并将其替换为0-9&#34; 。
如果您的目标是获取$query_row["Band"]
的第一个字符,并将其替换为0-9
,如果它是一个数字(否则将其设为大写)我会写一些更简单的内容:
$direction = substr($query_row["Band"], 0, 1);
if (is_numeric($direction)) {
$dir = '0-9';
} else {
$dir = strtoupper($direction);
}