将两个数组替换为其他数组

时间:2012-11-12 01:34:28

标签: php arrays multidimensional-array foreach preg-match-all

假设我有两个来自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;
}

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

中的第一项

2 个答案:

答案 0 :(得分: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.
)

答案 1 :(得分:0)

也许首先调用 array_replace()将第一个数组的值替换为第二个数组中的值将执行您想要的操作。

希望这有帮助。