【问题标题】:How to use preg_replace on multidimensional array and with a multidimensional array as source for the replacment如何在多维数组上使用 preg_replace 并使用多维数组作为替换源
【发布时间】:2014-08-21 13:57:11
【问题描述】:

大家好,我有以下数组,我只想用 $b[1] 替换 $a[1] 中的日期,用 $b[2] 替换 $a[2] ...

$a=array(
    1 => 'BLALBLSALV23.04.2014bjwjfdwjd'
    2 => 'BLAJSDJSAD24.04.2015bjwjfdwjd'
    ...
    )
$b=array(
    1 => '20140423'
    2 => '20150424'
    ...
    )

我正在使用 preg_replace 但结果没有显示任何变化,这是我使用的代码

$i=0;
$anlagDat = "#(\d{1,2})\.(\d{1,2})\.(\d{1,4})#";   
foreach($a as &$value){
preg_replace($anlagDat,$b[$i],$value);
$i++;
}

我知道它不可能是一个错误的正则表达式,因为我在程序中使用过它

【问题讨论】:

  • 你没有对preg_replace的返回值做任何事情。
  • 除了@Jon 的评论,您可能还想初始化您的$i 变量。如果你之前使用过它,你会得到意想不到的结果。或者你直接在循环中得到它:foreach($a as $i => &$value)。并在循环后取消设置 $value 变量以避免以后出现错误。
  • @Jon 谢谢乔恩那是我的错误
  • @jeroen 在我的原始代码中我让它用 $i=0; 初始化上面的一行我编辑了帖子感谢您使帖子变得更好!

标签: php arrays multidimensional-array foreach preg-replace


【解决方案1】:

preg_replace 返回带有更改的新字符串。试试这个 sn-p:

$anlagDat = "#(\d{1,2})\.(\d{1,2})\.(\d{1,4})#";
foreach($a as &$value) {
    $value = preg_replace($anlagDat,$b[$i],$value);
    $i++;
}

【讨论】:

    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2010-10-17
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多