1

使用するデータの配列が2つあり、両方をそのように利用するループを作成しようとしています。

配列Aはキーワードのリストです。配列Bは都市名のリストです。

次のforeachループで各キーワードを取得し、それを都市名と組み合わせたいと思います。各キーワードが配列Bのすべての都市に正常に一致したら、ループを続けて配列Aの値とマッチングを続行します。

簡単そうに見えますが、以下のコードを使用すると、正しく動作させることができませんでした。ループは、キーワードのリストから1つの値を取得する際に正常に機能しますが、配列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

これは、私があなたのコードを適応させるというよりも、概念的な答えです。2つのリストのすべての組み合わせの可能性を取得しようとしている場合、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 ($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 に答える
0

最後に文字列にforeach追加すると、代わりに結果配列に「ファイル名」を収集できます。$cityname$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 に答える