1

PHP/MySQLで達成しようとしているこの小さなタスクがあります。

私が働いている会社での業務に問題が発生した場合に使用する顧客からFAX番号(およびその他のデータ)を収集しています(プログラミングではなく、心配しないでください)。

基本的に私はこのような配列を持っています。

   Array
   [1]
      [company] => "Company A"
      [fax] => "031-558330"

   [2]
      [company] => "Company B"
      [fax] => "031558330"

   [3]
      [company] => "Company C"
      [fax] => "12345"

ダッシュ(-)を削除すると、[fax]は実際には1と2で重複していることに注意してください。

私の問題は、[1]と重複しているため、[2]を削除する必要があることです。基本的に、私は一意のファックス番号をリストし、その一意のファックス番号の会社名を印刷しようとしています。

これまで私はこれを行いました:

function format_text($text,$number)
{
    $text = str_ireplace(" ","",$text);
    $text = str_ireplace("-","",$text);
    $text = str_ireplace(",","",$text);
    $text = str_ireplace("/","",$text);
    $text = str_ireplace("+46","0",$text);
    $text = trim($text);

    return $text;
}


$fax_result = mysql_query("SELECT fax,company FROM beredskap GROUP BY company") or die(mysql_error());

for($i = 0; $fax_array[$i] = mysql_fetch_assoc($fax_result); $i++) ;
array_pop($fax_array);

for($i = 0; $i<count($fax_array);$i++)
{ 
    $fn = format_text($fax_array[$i]['fax']);
    if(!empty($fn)) {
    echo trim($fax_array[$i]['company']) .",". $fn ."\n";

    }
}

2つのサブ要素をどのように比較するのか(SQLからの生データには違いがあるかもしれませんが、ダッシュとコンマを削除すると他のエントリと重複するため)、親キーを削除する方法がわかりません。

私はこの質問を正しい方法で提起したことを心から望んでいました。

助けてくれる人はいますか?ありがとうございました!

4

1 に答える 1

0

SQLでそれを行うことができます:

SELECT   company,
         TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(fax,
           ' ',   '' ),
           '-',   '' ),
           ',',   '' ),
           '/',   '' ),
           '+46', '0')
         ) AS faxno
FROM     beredskap
GROUP BY faxno

異なる会社に対して同じ FAX 番号がテーブルに表示されている場合、上記のクエリはそれらの会社の 1 つを不確定に選択することに注意してください。その場合、特定の会社を選択したい場合は、選択する会社をどのように決定するかを明確にしてください。

また、このグループ化により、単一の会社の結果セットに複数のエントリが作成されることにも注意してください。その会社のレコードがberedskapテーブル内に異なる FAX 番号を持つ場合、元のクエリではそのような会社の FAX 番号の 1 つだけが不確定に選択されます。これがあなたの希望する動作でない場合は、選択するファックス番号をどのように決定するかを明確にしてください.

于 2012-08-27T08:17:21.610 に答える