数组有问题

时间:2015-10-30 10:11:31

标签: php arrays replace

我正在使用此代码获取第一个数字并将其替换为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); 

2 个答案:

答案 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);
}