0

假设我有两个从 pre_gmatch 得到的数组:

preg_match_all('#<div class="cloud_flow_big">(.*?)</div>#is', $mystring, $names, PREG_SET_ORDER);
preg_match_all('#<div class="bgframe(.*?)</div></div>#is', $mystring, $numbers, PREG_SET_ORDER);

获取数组中的项目计数始终相同。所以这是了解发生了什么的代码,并且在第一个数组的所有项目中都有一个重复的单词(在这种情况下这个单词是数字):

foreach ($names as $key => $name) {
    $i++;
$nameclean = str_replace ("number", $numbers[$key], $names[$key]);
echo $nameclean;
}

那么如何foreach第一个数组,但结果是将第一个数组中的所需单词替换为数组2中的所需项。示例:数组$names中的第一项中的单词编号应替换为数组$numbers中的第一项

4

2 回答 2

1

让我们稍微简化一下并将 preg_match 排除在等式之外。我们将从两个单独的数组开始。

$numbers = array(
  "I like having number eyes.",
  "there are number days in a week,",
  "A car normally has number wheels.",
);

$names = array( "two", "seven", "four");

使用 foreach 回答您的问题,您可以执行以下操作

$i = 0;
foreach ($numbers as $number) {
  $numbers[$i] = str_replace ("number", $names[$i], $number);
  $i++;
}

然而,这在 for 循环中会更好地工作

for ($i = 0; $i < count($numbers); $i++) {
  $numbers[$i] = str_replace ("number", $names[$i], $numbers[$i]);
}

这两个的结果是

Array
(
    [0] => I like having two eyes.
    [1] => there are seven days in a week,
    [2] => A car normally has four wheels.
)
于 2012-11-12T04:28:11.217 回答
0

也许调用 first array_replace ()用第二个数组中的值替换第一个数组的值会做你想要的。

希望这可以帮助。

于 2012-11-12T04:45:34.123 回答