データベース内の異なるテーブルにある同じフィールドの値を取り出し、それらを 2 つの異なる配列に入れました。array_diff() を使用して配列 1 の要素を検索しましたが、配列 2 の要素は検索しませんでした。なぜ 1 つの要素だけが異なるのでしょうか。戻ってきた?
コードは次のとおりです:
error_reporting( E_ALL&~E_NOTICE );
header('Content-type:text/html; charset=utf-8');
date_default_timezone_set('Asia/Shanghai');
require_once( "init.php");
$sql="select * from dev_property";
$num_rows=mysql_num_rows($res); ($sn =mysql_fetch_array($res))
{
$prime=array();
$prime[]=$sn["serial_number"]
for($i=0;$i
echo $prime[$i];
echo "" }
}
$starttime = '08:25:00 ';
$endtime = '23:35:00';
$sql="select * from data where time>='".date('Y-m-d').' and time< ='" .date('Y-m-d').' '.$endtime."'" ;
$result=mysql_query($sql) または die(mysql_error());
while($date=mysql_fetch_array($result) ))
{ // $num_rows1=mysql_num_rows($result);
$a=array();
for($i=0;$i)
echo $a[$i];
echo "" }
echo ""; $diff=array_diff ($prime,$a);
for($i=0;$i
echo "" ;
echo count ($diff);
echo "";
配列 $prime
862118028862462
862118028 86 2463
862118028862464
配列 $a
862118028862461
結果
862118028862464
1
フォローしてください 当初の目的は
862118028862462
862118028862463
862118028862464
今では 862118028862464 のみが返されます。なぜですか?
ディスカッション (解決策) に返信します
$diff=array_diff($prime,$a); の前に配列を出力して、それが何であるかを確認します
$diff=array_diff( $prime ,$a);
print_r($prime);print_r($a);$diff=array_diff($prime,$a);
ありがとう、$prime=array(); を while ループの外に配置する必要があることがわかりました。これは、配列を初期化することを意味します。 while ループでは毎回、すべてのデータが配列に格納されるわけではありません。