簡體   English   中英

比較兩個多維關聯數組

[英]Compare two multidimensional Associative arrays

我已經嘗試了幾個小時了。 我有兩個多維數組。

$newData (
[0] => Array(
    [id] => 1
    [name] => John
    [sex] => male
)
[1] => Array(
    [id] => 2
    [name] => Kenny
    [sex] => male
)
[2] => Array(
    [id] => 3
    [name] => Sarah
    [sex] => female
)
[3] => Array(
    [id] => 4
    [name] => George
    [sex] => male
)
)

$oldData (
[0] => Array(
    [id] => 3
    [name] => Sarah
    [sex] => female
)
[1] => Array(
    [id] => 4
    [name] => George
    [sex] => male
)
[2] => Array(
    [id] => 5
    [name] => Peter
    [sex] => male
)
[3] => Array(
    [id] => 6
    [name] => Lexi
    [sex] => female
)
)

如果在名字$oldData與匹配$newData我需要不使用更多的循環來獲取該陣列的ID

您想使用array_search()

它也可以返回找到匹配項的數組的鍵。

例如

$key = array_search($array1['name'], $array2);

我認為循環並沒有那么復雜。 如果我正確理解了您的問題,那么代碼將看起來像這樣:

$matches = array();
foreach($newData as $index => $newItem)
  foreach($oldData as $oldItem)
    if($newData['name'] === $oldItem['name'])
      $matches[] = $index;

通過兩個循環,可以獲得數組鍵。

$oldDataCount = count($oldData);

$result = array();

for($i = 0; $i < count($newData); $i++)     
    for($j =0; $j < $oldDataCount; $j++) 
        if ($oldData[$j]['name'] == $newData[$i]['name']) 
            $result[$newData[$i]['name']] = $j;


print_r($result);

現在,該數組保存結果Array ( [Sarah] => 0 [George] => 1 )

暫無
暫無

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

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