ホームページ > バックエンド開発 > PHPチュートリアル > array_diff() を使用して 2 つの配列の差分を比較すると、異なる要素が 1 つしか返されないのはなぜですか?

array_diff() を使用して 2 つの配列の差分を比較すると、異なる要素が 1 つしか返されないのはなぜですか?

WBOY
リリース: 2016-06-23 13:37:51
オリジナル
1322 人が閲覧しました

データベース内の異なるテーブルにある同じフィールドの値を取り出し、それらを 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 $diff[$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 ループでは毎回、すべてのデータが配列に格納されるわけではありません。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート