1

我有两个数据数组可以使用,我正在尝试创建一个循环来像这样利用它们。

数组 A 是关键字列表。数组 B 是城市名称列表。

我希望以下 foreach 循环获取每个关键字并将其与城市名称组合。当每个关键字成功匹配到数组 B 中的每个城市时,我希望循环继续遍历数组 A 值和继续匹配。

看起来很简单,但是使用下面的代码,我无法让它正常工作。该循环成功地从关键字列表中获取一个值,但随后它只是将数组 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

我认为这很容易,但我边走边学,我对可能导致此问题的原因感到困惑。如果有什么可以帮助解决的,请指教!我确实希望学习如何正确地做到这一点,所以我只是在寻找任何指导。

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

4

3 回答 3

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

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

于 2013-01-27T16:30:10.760 回答
0

最后一次foreach添加$cityname到 string $file,您可以在结果数组中收集“文件名”:

$filenames = array();
foreach($keyword_list as $keyword)

    // ... snip/snap ...

    foreach($city_list as $city) {
        $filnames []= $file.'-'.$city;
    }
}

print_r($filenames);
于 2013-01-27T16:11:16.253 回答
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;
}
?>

(我还没有运行上面的代码片段来测试它。)

于 2013-01-27T16:07:09.863 回答