1

私は、米国の各郡を表す一連のコード番号を持っています。各郡のコードは一意であり、2 桁の州コードと郡に基づく 3 桁の奇数で構成されています。

たとえば、私の SQL データベースでは、テキサス州はコード 42 です。テキサス州ダラス郡は 42113 です。テキサス州ドーソン郡は 42115 です。

これらのコードを、同様のコードを含むが州コードが異なる別の DB テーブルと照合しようとしています。この DB では、テキサスがコード 45 であるため、ダラス郡は 45113 です。したがって、正しいデータがあっても、コードが正しく一致しません。

これが私が現在データをプルしている方法です。

$result = mysql_query("SELECT county_id,county,state FROM data GROUP BY county_id");
$rows = array();
while($row = mysql_fetch_array($result)) {
    $county_id          = $row['county_id'];
    $county             = $row['county'];
    $state              = $row['state'];
    array_push($rows,$row);
    printf ("%s,%s,%s\n<br>", $row['county_id'], $row['county'], $row['state']);

}

これにより、米国の各州のコード化されたリストが得られます

私がする必要があるのは、各コードの最後の 3 桁を同じままにして、各 county_id を正しい州コード番号に変換することです。つまり、文字列「state」の値が TX の場合、「45113」の「45」を「42113」に変更する必要があります。文字列 'state' の値が WV の場合、'47* ' の '47' を '12* 'に変更したいと考えています。

何らかの理由で、これを効率的に行う方法に頭を悩ませることができません。何か案は?

4

2 に答える 2

0

substr_replace を使用して、自分の問題を解決することができました。

while($row = mysql_fetch_array($result)) {
$county_id = $row['county_id'];
$county_count = $row['county_count'];
$state = $row['state'];
if ($state == "AL")
        {
        $county_id_al = substr_replace($county_id,'1',0,1);
        echo $county_id_al;
        echo ",";
        echo $county_count;
        echo "<br>";
        }

等々。これはエントリの状態をチェックし、最初の (または既存の ID コードによっては最初の 2 桁) を削除し、それらを「正しい」1 桁または 2 桁のコードに置き換えます。

DB を爆破する必要があると提案した人: その通りです。最初から正しい FIPS コードを使用しなかった理由がわかりません。しかし、この時点で、変更が理にかなっているポイントを超えて waaaaaaaay を吹き飛ばしてしまいました。

于 2013-08-28T16:26:00.690 に答える