特定のプレーヤに基づいた値を持つ配列があります。これらの値の一部(match_idとminutes)を使用して2番目の配列と比較し、戻り値を保持する3番目の配列PHP、2つの配列を比較して結果のある3番目の配列を作成
私はこれをJoomlaベースのWebサイト用に書いていますので、inbuilt配列関数LoadRowList()を使用しています。クエリによって返されたテーブルレコードからインデックス付き配列のインデックス付き配列を返します。
最初の配列は、特定のプレイヤー
$search = array();
$query = "SELECT first_name,match_id,m_name,minutes,points
FROM #__bl_players as pl,#__bl_match_events as me,#__bl_matchday as md, #__bl_match as m
WHERE pl.id = me.player_id
AND pl.id = ".$player_id."
AND me.match_id = m.id
AND m.m_id = md.id
";
$db->setQuery($query);
$search = $db->loadRowList();
$検索配列は、以下の形式の配列を出力に基づいて移入値を含みます。 print_r($ search);
Array (
[0] => Array ([0] => Marco [1] => 33 [2] => Xornada 04 [3] => 7 [4] => 3)
[1] => Array ([0] => Marco [1] => 129 [2] => Xornada 08 [3] => 1 [4] => 2)
[2] => Array ([0] => Marco [1] => 129 [2] => Xornada 08 [3] => 6 [4] => 2)
)
第2の配列には、最初の配列と同じレイアウトの数百のレコードが含まれています。
$data = array();
$query = "SELECT first_name,match_id, m_name,minutes,ecount
FROM #__bl_players as pl,#__bl_match_events as me,#__bl_matchday as md, #__bl_match as m
WHERE pl.id = me.player_id
AND me.match_id = m.id
AND m.m_id = md.id
AND md.s_id = ".$s_id."
";
$db->setQuery($query);
$data = $db->loadRowList();
$データ配列は、上記と同じ形式で出力されます。 print_r($ data);
Array (
[0] => Array ([0] => Pablo [1] => 8 [2] => Xornada 01 [3] => 2 [4] => 3)
[1] => Array ([0] => Juan Ramón [1] => 9 [2] => Xornada 01 [3] => 1 [4] => 0)
[2] => Array ([0] => Pedro [1] => 9 [2] => Xornada 01 [3] => 1 [4] => 3)
)etc etc etc
そして最後に、私は3番目の配列のみmatch_idと分に基づいて$検索と$データ配列との間の一致のレコードによって移入する必要があります。
Array(
[0]=>Array ([1]=> PlayerName(from the first array)[2]=> MatchID[3]=> MatchName[4]=> TimePlayed[5]=> Score(from the first array)[6]=> Score(from the second array)[7]=> PlayerName(from the second array))
)etc etc etc
私は私がすべてと任意のアイデアやフィードバックを探していますので、私は専門家だより多くの情報を含めるように、私の元の質問を修正しました。おかげ
注:列名の領域Iは、In を抱えている名前= FIRST_NAME、マッチID = match_id、マッチ名= M_NAME、イベント時間=分、ポイント獲得=ポイント
の問題を次のコメントへの応答は、これが私の問題は、例えば、次のコード(その唯一の例)を取るです:私は$エントリのような比較を使用する場合は
$matches = array();
foreach ($data as $entry){
if ($entry[2] == $search[2]) {
match =$search;
$matches[] = $match
}
}
print_r($mtaches)
を[2] == $ [2]それが比較されますを検索それぞれから2番目の配列
`[2] => Array ([0] => Marco [1] => 129 [2] => Xornada 08 [3] => 6 [4] => 2)
==
[2] => Array ([0] => Pedro [1] => 9 [2] => Xornada 01 [3] => 1 [4] => 3)`
ので、私の質問は、私は、キーの値が彼らの助けと忍耐のために皆に
$entry[*][2] == $search[*][2]
おかげで、すなわち比較できるようにワイルドカードの種類を使用しない方法です特に自分の知識を共有するための@eriscoへ
あなたは 'あるarray_walk()'したり、独自の関数を記述に似必要になります - http://php.net/manual/en/function.array-walk.php –
を私はそのカスタムプロセスを好みます歩行とは対照的に、配列を反復する。入力に数値と文字列の両方が含まれている場合は、読みにくく、フォールトトレラントである可能性があります。 – zanlok
この問題は、問合せの変更ではっきりと解決できますが、関連する表に対して正確なデータベース構造を提供する必要があります。 – erisco