为foreach循环添加另一个条件(PHP)

时间:2013-01-27 15:53:17

标签: php loops foreach

我有两个数据数组可供使用,我正在尝试创建一个可以同时使用它们的循环。

数组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

我认为这很容易,但我正在学习,因为我可能会导致这个问题。如果有任何我可以做的事情来帮助解决它,请指教!我确实希望学习如何正确地做到这一点,所以我只是在寻找任何指导。

非常感谢你花时间阅读我的问题。

3 个答案:

答案 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

我认为这正是您所寻找的。

答案 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);