0

以下の 2 つの配列を比較して、違いを見つけたいと思います。キー「リード所有者」と「会社」の値が異なりますが、これらの配列を比較すると、「会社」の値のみが異なると表示されます。しかし、「リード所有者」のキーと値のペアを 1 つだけ使用して 2 つの新しい配列を作成すると、正しく機能します。私は何か間違いを犯していますか?

<?php

$arr1 = Array
    (
        "leadid" => "418176000000069007",
        "smownerid" => "418176000000047003",
        "lead owner" => "Amit Patil",
        "company" => "SAM",
        "first name" => "Test",
        "last name" =>"Lead1",
        "designation" => "call",
        "email" => "",
        "phone" => "958",
        "fax" => "",
        "mobile" => "",
        "website" => "www.infosys.con",
        "lead source" => "Cold Call",
        "lead status" => "Contact in Future",
        "industry" => "None",
        "no of employees" => "45000",
        "annual revenue" => "0",
        "rating" => "Active",
        "smcreatorid" => "418176000000047003",
        "created by" => "Amit Patil",
        "modifiedby" => "418176000000047003",
        "modified by" => "Amit Patil",
        "created time" => "2012-04-05 19:58:00",
        "modified time" => "2012-05-02 08:51:08",
        "street" => "",
        "city" => "",
        "state" => "",
        "zip code" => "",
        "country" => "",
        "description" => "",
        "skype id" => "",
        "email opt out" => "false",
        "salutation" => "Mr.",
        "secondary email" => ""
        );

$arr2 = Array
    (
        "leadid" => "418176000000069007",
        "smownerid" => "418176000000047003",
        "lead owner" => "Amit aaa",
        "company" => "SAM A",
        "first name" => "Test",
        "last name" => "Lead1",
        "designation" => "call",
        "email" => "",
        "phone" => "958",
        "fax" => "",
        "mobile" => "",
        "website" => "www.infosys.con",
        "lead_source" => "Cold Call",
        "lead_status" => "Contact in Future",
        "industry" => "None",
        "no_of_employees" => "45000",
        "annual_revenue" => "0",
        "rating" => "Active",
        "smcreatorid" => "418176000000047003",
        "created_by" => "Amit Patil",
        "modifiedby" => "418176000000047003",
        "modified_by" => "Amit Patil",
        "created_time" => "2012-04-05 19:58:00",
        "modified_time" => "2012-05-02 08:51:08",
        "street" => "",
        "city" => "",
        "state" => "",
        "zip_code" => "0",
        "country" => "",
        "description" => "",
        "skype_id" => "",
        "email_opt_out" => "false",
        "salutation" => "Mr.",
        "secondary_email" => ""
        );

$arr3 = array("lead owner" => "Amit Patil");
$arr4 = array("lead owner" => "Amit aaa");

print_r(array_diff($arr1,$arr2));
echo "<br>";
print_r(array_diff($arr3,$arr4));
?>

出力は以下のとおりです

Array ( [company] => SAM )
Array ( [lead owner] => Amit Patil ) 
4

5 に答える 5

1

あなたはそれを間違って理解しています。

array_diffのドキュメントページには、

他のどの配列にも存在しない、array1 からのすべてのエントリを含む配列を返します。

しかし、Amit Patilは 2 番目の配列に存在するため、1 つの値のみを返しSAM、2 番目の配列に存在しない値は 1 つだけです。

于 2012-05-25T05:30:55.020 に答える
1

値だけでなくキーと値のペアが重要になるように、連想配列間で比較したい場合は、array_diff_assoc, notを使用しますarray_diff

于 2012-05-25T05:31:39.533 に答える
1

array_diff()補数値を返します。したがって、次のようにすることができます。

   array_diff(array_merge($arr1, $arr2), array_intersect($arr1, $arr2));

このように動作します。

于 2012-05-25T05:33:53.600 に答える
1

これは、「array_diff」関数が、最初の配列の任意のキーで発生し、2 番目の配列のどのキーにも発生しない値を返すために発生します。

Lead_owner "Amit Patil" は、2 番目の配列 lead_owner と等しくありませんが、2 番目の配列の created_by および modified_by キーと等しくなります。

この目的には、「array_diff_assoc」を使用する必要があります。

于 2012-05-25T05:35:26.580 に答える
1

これを試してみてください、これはうまくいくはずです

print_r(array_diff_assoc($arr1,$arr2));
echo "<br>";
print_r(array_diff_assoc($arr3,$arr4));
于 2012-05-25T05:35:43.800 に答える