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

如果 name in与我$oldData匹配,$newData我需要获取该数组的 id 而无需使用更多循环

4

3 回答 3

0

你想使用array_search()

它还可以返回您在其中找到匹配项的数组的键。

例如

$key = array_search($array1['name'], $array2);
于 2013-07-25T13:30:27.707 回答
0

我认为循环并不那么复杂。如果我正确理解了您的问题,代码将看起来像这样:

$matches = array();
foreach($newData as $index => $newItem)
  foreach($oldData as $oldItem)
    if($newData['name'] === $oldItem['name'])
      $matches[] = $index;
于 2013-07-25T13:36:44.383 回答
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 )

于 2013-07-25T13:40:26.877 回答