我有两个数据数组可供使用,我正在尝试创建一个可以同时使用它们的循环。
数组A是关键字列表。 数组B是城市名称列表。
我想使用以下foreach循环来获取每个关键字并将其与城市名称相结合。当每个关键字成功匹配到阵列B中的每个城市时,我希望循环继续通过数组一个值并继续匹配。
看起来很简单,但使用下面的代码,我无法让它正常工作。循环可以成功地从关键字列表中获取一个值,但它只是将数组B中的每个值添加到该关键字并以此方式循环。
我的代码如下所示:
<?php
foreach ($keyword_list as $key => $value) {
$keyword = strtolower($value);
//REMOVE COMMAS
$keyword = str_replace(',', '', $keyword);
//ADD HYPHENS
$keyword = str_replace(' ', '-', $keyword);
for ($i = 0; $i < count($content); $i++) {
$content[$i] = trim($content[$i]);
//RE-REPLACE SINGLE QUOTES TO ESCAPED VERSIONS FOR INCLUSION IN HTML DOC (PHP ARRAY)
$content[$i] = str_replace("'", "\'", $content[$i]);
}
$file = strtolower(str_replace(' ', '-', $businessName . '-' . $businessPhone));
$file .= '-' . $keyword;
foreach ($city_list as $key2=>$value2) {
$file .='-' . $cityword;
}
$filename = $file . '.php';
}
?>
因此,使用上面的代码,以下将作为示例生成...
Google-5555555555-Keyword Here-CityNameOne-CityNameTwo-CityNameThree.php
相反,我希望它可以这样工作......
Google-5555555555-Keyword Here-CityNameOne.php
Google-5555555555-Keyword Here-CityNameTwo.php
Google-5555555555-Keyword Here-CityNameThree.php
我认为这很容易,但我正在学习,因为我可能会导致这个问题。如果有任何我可以做的事情来帮助解决它,请指教!我确实希望学习如何正确地做到这一点,所以我只是在寻找任何指导。
非常感谢你花时间阅读我的问题。
答案 0 :(得分:1)
这更像是一个概念答案,而不是我调整你的代码。如果你想要获得两个列表的所有组合可能性,foreach循环中的foreach循环对此非常有效。
$keywords = array('keyword0', 'keyword1', 'keyword2', 'keyword3', 'keyword4', 'keyword5', 'keyword6', 'keyword7', 'keyword8', 'keyword9');
$cities = array('austin', 'houston', 'dallas', 'san antonio', 'amarillo', 'katy', 'kyle', 'round rock', 'buda', 'paris');
$all_possible_combinations = array();
//if you would like to get all of the possible combinations of these two lists you may try something similiar to this
foreach($cities as $citykey => $cityname){
foreach($keywords as $keywordskey => $keyword){
$all_possible_combinations[] = 'Google-5555555555-'.$keyword.'-'.$cities[$citykey].'.php';
}
}
echo '<pre>';
print_r($all_possible_combinations);
echo '</pre>';
您可以在此处编辑和查看输出: http://sandbox.onlinephpfunctions.com/code/57522c0bb18e5c04dd6ba3c046f1f9593ce2ceec
我认为这正是您所寻找的。 p>
答案 1 :(得分:0)
你的问题在于这个循环:
foreach ($city_list as $key2=>$value2) {
$file .= '-' . $cityword;
}
快速解决方法是:
<?php
foreach ($keyword_list as $key => $value) {
$keyword = strtolower($value);
//REMOVE COMMAS
$keyword = str_replace(',', '', $keyword);
//ADD HYPHENS
$keyword = str_replace(' ', '-', $keyword);
for ($i = 0; $i < count($content); $i++) {
$content[$i] = trim($content[$i]);
//RE-REPLACE SINGLE QUOTES TO ESCAPED VERSIONS FOR INCLUSION IN HTML DOC (PHP ARRAY)
$content[$i] = str_replace("'", "\'", $content[$i]);
}
$start_of_line = strtolower(str_replace(' ', '-', $businessName . '-' . $businessPhone));
$start_of_line .= '-' . $keyword;
foreach ($city_list as $key2=>$value2) {
$file .= $start_of_line . '-' . $cityword . '.php'."\n";
}
$filename = $file;
}
?>
(我没有运行上面的代码段来测试它。)
答案 2 :(得分:0)
您将foreach
添加到字符串$cityname
的最后$file
,您可以在结果数组中收集“文件名”:
$filenames = array();
foreach($keyword_list as $keyword)
// ... snip/snap ...
foreach($city_list as $city) {
$filnames []= $file.'-'.$city;
}
}
print_r($filenames);