проверить для значений array1 в array2 - PullRequest
0 голосов
/ 22 июля 2011

Наличие следующих двух разных массивов в php:

Array1
(
    [0] => Array
        (
            [id] => 1
            [name] => William
        )

    [1] => Array
        (
            [id] => 2
            [name] => Bob
        )

    [2] => Array
        (
            [id] => 3
            [name] => Michael
        )

)
Array2
(
    [0] => Array
        (
            [id] => 11128
            [name] => John
        )

    [1] => Array
        (
            [id] => 11127
            [name] => Adam
        )

    [2] => Array
        (
            [id] => 11126
            [name] => Andrew
        )

    [3] => Array
        (
            [id] => 11125
            [name] => William
        )

    [4] => Array
        (
            [id] => 11124
            [name] => Bob
        )

)

Можно ли как-нибудь найти совпадающие name с, чтобы результат был таким:

Array1 (1, id:2) matches Array2 (4, id:11124) with name: Bob
Array1 (0, id:1) matches Array2 (3, id:11125) with name: William

извините, если неясно

Ответы [ 2 ]

3 голосов
/ 22 июля 2011

Вы всегда можете попробовать простой цикл foreach:

<?php
foreach($array1 as $key1=>$value1) {
    foreach($array2 as $key2=>$value2) {
        if($value1['name'] === $value2['name']) {
            sprintf('Array1 (%d, id:%d) matches Array2 (%d, id:%d) with name: %s', $key1, $value1['id'], $key2, $value2['id'], $value1['name']);
        }
    }
}
?>
1 голос
/ 22 июля 2011
foreach($array1 as $i=>$x){
  foreach($array2 as $k=>$y){
    if($x['name'] == $y['name']){
      echo "Array1 ($i, id:{$x['id']}) matches Array2 ($k, id:{$y['id']}) with name: {$x['name']}\n";
      break;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...