2

PHPで、次の名前のプロジェクトを編集します。ABCこのプロジェクトは多くのに属しており、使用したこのプロジェクトを追加して<select multiple="multiple">、選択したすべての国をprojectCountriesテーブルに保存します。このプロジェクトの編集を開始すると、少し変更を加えて同じロジックを使用します。

  1. 国テーブルからすべての国を入力します
  2. projectIdに関連付けられているprojectCountriesテーブルからすべての国をフェッチします

そして私は2つの配列を手に入れました:

Array ( 
    [0] => Array ( [countryId] => 1 [countryName] => Pakistan ) 
    [1] => Array ( [countryId] => 2 [countryName] => China ) 
) 

ステップ1からの出力

Array ( 
    [0] => Array ( [pcId] => 1 [countryId] => 1 [projectId] => 1 ) 
    [1] => Array ( [pcId] => 2 [countryId] => 2 [projectId] => 1 ) 
)

ステップ2からの出力

しかし、中国という名前の国がすでにプロジェクトに関連付けられていることを示す方法が混乱しています(ですでに選択されています<select multiple="multiple">

作成するためにforeachループ<select multiple="multiple">を使用したためです。これで、 foreachループで2つの配列を比較する方法を推測できなかったため、で設定しました。selected="selected"<option>

4

2 に答える 2

3

すべての国を反復処理し、その国がprojectCountries出力配列に存在するかどうかを確認します。

このようなもの:

$pc_list = array();
foreach($project_countries as $pc) {
    $pc_list[] = $pc['countryId'];  
}

foreach($countries as &$country) {
    if(in_array($country['countryId'], $pc_list)) {
        $country['selected'] = TRUE;
    }
}
于 2012-06-21T12:18:45.877 に答える
1

オプション1:ステップ1 のforeachループを実行します。すべての反復で、2番目の配列を反復処理し、(最初のループからの)現在のIDを持つ国があるかどうかを確認できます。

オプション2: SQLクエリを次のようなものに変更します(たとえば、結合を使用)。

CountryId CountryNameProjectId1
パキスタン
12中国13
ドイツnull

于 2012-06-21T12:17:42.663 に答える