簡體   English   中英

這個簡單的代碼有什么問題?

[英]What's wrong with this simple code?

我想比較下面的2個數組並找到不同之處。 鍵“ lead owner”和“ company”的值不同,但是當我比較這些數組時,它說只有“ company”值不同。 但是,當我為“潛在客戶所有者”創建只有一個鍵/值對的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 ) 

您誤會了。

array_diff的文檔頁面說

返回一個數組,其中包含array1中所有其他數組中不存在的所有條目。

但是Amit Patil存在於第二個數組中,因此它僅返回一個值為SAM值,並且僅返回一個值不存在於第二個數組中。

如果要在關聯數組之間進行區分,以便鍵值對(而不只是值)很重要,請使用array_diff_assoc ,而不要使用array_diff

array_diff()返回互補值。 因此,您可以這樣做:

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

這樣,它將起作用。

發生這種情況是因為“ array_diff”函數返回的值出現在第一個數組中的任何鍵上,而沒有出現在第二個數組中的任何鍵上。

lead_owner“ Amit Patil”不等於第二個數組lead_owner,但等於第二個數組的created_by和Modify_by鍵。

為此,您應該使用“ array_diff_assoc”。

試試這個,看看,這應該工作

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM