2013-07-25 128 views
0

我一直试图得到这个小时了。我有两个多维数组。比较两个多维联想阵列

$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匹配我需要在不使用更多循环

+0

你可以改变阵列的结构? – exussum

+2

粘贴到目前为止所做的。 –

回答

0

你要用来获取该阵列的ID array_search()

也可以返回数组的关键你会发现在比赛中。

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

我认为它不是很复杂的循环。如果我理解正确你的问题的代码看起来在某种程度上是这样的:

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

有两个回路,可以获取数组键。

$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)