-2

私は PHP の第一人者ではありません。あなたの助けが必要です。

選択メニューのあるphpフォームがあります。メニューは顧客テーブルの電子メールから形成されます。次のコードを使用しました。

for($i = 0; $i < sizeof($customers_table); $i++){
     echo '<option value="'.$customers_table[$i]['id'].'">'.$customers_table[$i]['email'].'</option>';
}

土台が結構大きいので選択肢欄を作るのに時間がかかります。スクリプトを最適化して高速に動作させる方法はありますか。

ありがとうございました。

4

2 に答える 2

1

サイズは変わらないので、次のように保管してください。

$size = sizeof($customers_table);
for ($i = 0; $i < $size; $i++) {
    echo '<option value="'.$customers_table[$i]['id'].'">'.$customers_table[$i]['email'].'</option>';
}

次に、ループ条件を短縮し、配列アクセスを減らすことができます。

$i = $size = sizeof($customers_table);
while ($i) {
    $table = $customers_table[$size-$i--];
    echo '<option value="'.$table['id'].'">'.$table['email'].'</option>';
}

次の部分は、文字列を出力する前に連結する代わりに出力できる echo ステートメントです。

$i = $size = sizeof($customers_table);
while ($i) {
    $table = $customers_table[$size-$i--];
    echo '<option value="', $table['id'], '">', $table['email'], '</option>';
}

これが違いを生む場合は、測定する必要があります。かかる最大の時間は、ブラウザーに送信する HTML の量である可能性があります。しかし、それはこのフラグメントの範囲外です。

コードの全体的な読みやすさを向上させるために、次を使用することをお勧めしforeachます。

foreach ($customer_table as $row)
{
    echo '<option value="', $table['id'], '">', $table['email'], '</option>';
}

これも一般的にかなり高速です。

于 2012-04-14T15:48:05.843 に答える
0

Andy が言ったように、このスクリプトをそのように最適化するのは得策ではありません。時間の大幅な変更が必要な場合は、問題を再考する必要があります。

顧客のリストがありますが、時間の問題があるとしたら、たくさんあると思います。したがって、ドロップダウン リストはユーザーにとって役に立ちません。

より効率的な他のソリューションがあります:

  • ある種のキャッシングを使用する > HTML コードは常に同じであるため、顧客を追加、削除、または更新するときにループを 1 回実行するだけでよく、HTML コードをスクリプトまたはデータベースに保存します。したがって、ページがリロードされるたびに、html コードを取得するだけで済みます。
  • すべての顧客をロードしない > ユーザーはすべての顧客を表示する必要はなく、関心のある顧客だけを表示する必要があるため、一部の Ajax を使用すると、ユーザーが入力している間にオプションをロードできます (例: jQuery Autocompleteを参照) 。

これらのソリューションは最適化に最適であり、それらを組み合わせると (キャッシングと入力された 3 文字以上のオートコンプリート)、ユーザー エクスペリエンスもさらに向上します。

于 2012-04-14T16:08:32.120 に答える