如何在多个查询中进行多个字符串替换?
How do I do multiple string replacements in multiple queries?
我有一个名为 $queries
的数组,如下所示:
Array (
[0] => SELECT * FROM StudentRecord WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND StudentID = '%SID%';
[1] => SELECT * FROM Student_ApplicationRecord WHERE ApplicationYear = '%YEAR%' AND Session%SESSION% = 1;
)
我还有一个名为 $variables
的第二个数组,如下所示:
$variables = array('YEAR' => 2016, 'SESSION' => 1, 'SID' => $_SESSION['sid']);
我想用 $variables
中的正确值替换 $queries
中的变量。
我尝试了很多解决方案,到目前为止我想出的最好的是:
foreach ($queries as $query)
foreach($variables as $key=>$value)
$newqueries[] = str_replace("%".$key."%", $value, $query);
然而,这只是在每个查询中一次替换一个变量。
即当我这样做时:
foreach ($newqueries as $query)
print ($query);
每次查询的结果是:
SELECT * FROM StudentRecord
WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND SID = '%SID%';
SELECT * FROM StudentRecord
WHERE Year = '%YEAR%' AND Session = '1' AND SID = '%SID%';
SELECT * FROM StudentRecord
WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND SID = '1234';
我想要的是最终数组 $newqueries
,如下所示:
Array (
[0] => SELECT * FROM StudentRecord WHERE Year = '2016' AND Session = '1' AND StudentID = '1234';
[1] => SELECT * FROM Student_ApplicationRecord WHERE ApplicationYear = '2016' AND Session1 = 1;
)
有人能帮帮我吗?如果之前有人问过这个问题,我深表歉意,但我找不到任何类似的问题。
由于 str_replace()
接受 $search
和 $replace
参数的数组,您可以使用它。
$search = ['%YEAR%', '%SESSION%', '%SID%'];
$replace = ['2016', '1', $_SESSION['id']];
$newQueries = [];
foreach ($queries as $query) {
$newQueries[] = str_replace($search, $replace, $query);
}
我有一个名为 $queries
的数组,如下所示:
Array (
[0] => SELECT * FROM StudentRecord WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND StudentID = '%SID%';
[1] => SELECT * FROM Student_ApplicationRecord WHERE ApplicationYear = '%YEAR%' AND Session%SESSION% = 1;
)
我还有一个名为 $variables
的第二个数组,如下所示:
$variables = array('YEAR' => 2016, 'SESSION' => 1, 'SID' => $_SESSION['sid']);
我想用 $variables
中的正确值替换 $queries
中的变量。
我尝试了很多解决方案,到目前为止我想出的最好的是:
foreach ($queries as $query)
foreach($variables as $key=>$value)
$newqueries[] = str_replace("%".$key."%", $value, $query);
然而,这只是在每个查询中一次替换一个变量。
即当我这样做时:
foreach ($newqueries as $query)
print ($query);
每次查询的结果是:
SELECT * FROM StudentRecord
WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND SID = '%SID%';
SELECT * FROM StudentRecord
WHERE Year = '%YEAR%' AND Session = '1' AND SID = '%SID%';
SELECT * FROM StudentRecord
WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND SID = '1234';
我想要的是最终数组 $newqueries
,如下所示:
Array (
[0] => SELECT * FROM StudentRecord WHERE Year = '2016' AND Session = '1' AND StudentID = '1234';
[1] => SELECT * FROM Student_ApplicationRecord WHERE ApplicationYear = '2016' AND Session1 = 1;
)
有人能帮帮我吗?如果之前有人问过这个问题,我深表歉意,但我找不到任何类似的问题。
由于 str_replace()
接受 $search
和 $replace
参数的数组,您可以使用它。
$search = ['%YEAR%', '%SESSION%', '%SID%'];
$replace = ['2016', '1', $_SESSION['id']];
$newQueries = [];
foreach ($queries as $query) {
$newQueries[] = str_replace($search, $replace, $query);
}