假设我有两个来自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
中的第一项答案 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()将第一个数组的值替换为第二个数组中的值将执行您想要的操作。
希望这有帮助。