【最大10000ポイント】当たる!!質問投稿キャンペーン!

//データ1
$data1 = array('01' , '05' , '11' , '18' , '20');
$data2 = array('10' , '15' , '21' , '38' , '40');
$data3 = array('14' , '25' , '31' , '48' , '50');
$data4 = array('11' , '15' , '21' , '28' , '30');
$data5 = array('21' , '22' , '25' , '38' , '40');

//DBデータ
$dbData = array('10' , '12' , '35' , '37' , '41');


/*
データ1を表示するときにDBデータ($dbdData)にある数字は太字やカラーを入れて
表示したと考えています。

$data1~5と$dbDataをSQLで取り出して、その中に$dbDataがある場合の比較をする関数
やSQLがいまいち分かっていませんので、ご教授お願いします。

*/

このQ&Aに関連する最新のQ&A

A 回答 (4件)

たぶんこんなことだと思うんだけど・・・



<style>
.strong{
font-weight:bold;
color:red;
}
</style>

<?
$data[1] = array('01' , '05' , '11' , '18' , '20');
$data[2] = array('10' , '15' , '21' , '38' , '40');
$data[3] = array('14' , '25' , '31' , '48' , '50');
$data[4] = array('11' , '15' , '21' , '28' , '30');
$data[5] = array('21' , '22' , '25' , '38' , '40');
$data[6] = array('21' , '22' , '35' , '37' , '40');
//DBデータ
$dbData = array('10' , '12' , '35' , '37' , '41');

foreach($data as $vals){
foreach($vals as $key=>$val){
if($key>0) print " ";
if(in_array($val,$dbData)) print "<span class=\"strong\">{$val}</span>";
else print $val;
}
print "<br>";
}
?>
    • good
    • 0

#2です。



俺が書いたのも、#3さんがやってる in_array()での総当りと、
さほど変わらないと言う事に気がつきましたので、
分かりやすさと言う点で #3さんのほうが お勧めです。
    • good
    • 0

質問とはかけ離れた回答になっているかもしれませんが、


ご質問のように、データは全て配列に入っていると仮定して、書いてみました。

array_intersect() が 配列同士を 比較して、重複した要素を配列として返しています。

データの数字は テスト用に 若干変更しました。

<?
//データ1
$data1 = array('01' , '05' , '11' , '18' , '20');
$data2 = array('10' , '15' , '38' , '39' , '40');
$data3 = array('14' , '25' , '37' , '48' , '50');
$data4 = array('11' , '15' , '21' , '28' , '30');
$data5 = array('21' , '22' , '25' , '38' , '40');

//DBデータ
$dbData = array('10' , '12' , '35' , '37' , '38');

for($i=1;$i<6;$i++) {
$var = "data" . $i;
$DimComp = array_intersect($$var , $dbData);// 配列の比較
// print_r($DimComp); print "<br>";// ↑が どういう配列を返しているか
print "$var : ";
foreach($$var as $k => $dat) {
if ($DimComp[$k]) { print "<font color=red><b>$dat</b></font>\n"; } else { print "$dat"; }
print " | ";
}
print "<br>\n";
}
?>
    • good
    • 0

不明点がいろいろあります。


1、DBは何を使うのか
  →Oracle、SQLServer、MySQL、PostgreSQL、SQLite、DB2…
   いろいろあって、それぞれにSQLの方言があります。
   何を使うのか明らかにしないと間違った回答を返す事になりますよ。

2、データ1が格納されているテーブルの構造は
  →質問文だけ見ると、PHPのメモリ上に保持された配列からSQLを
   使ってデータを取り出したい、という意味に見えますが、それは
   できません。SQLはDBのデータを操作する言語ですから。
   DBに格納されているデータを取り出すならテーブル構造が不明だと
   SQLが書けません。
   (ひょっとしてDBは関係なくて、単に配列どうしの差を取り出したいってこと?)

3、比較とは具体的に何なのか
  →比較してどうしたいんですかね。
   それによって処理の内容が変わってくるので。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング