如何在php中基于第二个数组更改数组位置

时间:2015-04-08 09:26:15

标签: php arrays multidimensional-array

我有两个多维数组,我想根据第二个数组更改数组元素位置。我从来没有这样做过,所以不知道怎么用数组做这个。我在这里发布我的数组结果。

第一个(主要)数组:

Array
(
    [0] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1201
        )

    [1] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1200
        )

    [2] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1196
        )

    [3] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1193
        )

    [4] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1191
        )

    [5] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1145
        )

    [6] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1144
        )

    [7] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1139
        )

    [8] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1135
        )

    [9] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1053
        )
)

第二阵列:

Array
(
    [0] => stdClass Object
        (
            [bounced_id] => 2
            [user_id] => 156
            [property_id] => 1193
        )

    [1] => stdClass Object
        (
            [bounced_id] => 1
            [user_id] => 156
            [property_id] => 1191
        )

    [2] => stdClass Object
        (
            [bounced_id] => 26
            [user_id] => 156
            [property_id] => 1200
        )
)

我想要这个数组结果:

Array
(
    [0] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1193
        )

    [1] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1191
        )

    [2] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1200
        )


    [3] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1201
        )

    [4] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1196
        )

    [5] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1145
        )

    [6] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1144
        )

    [7] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1139
        )

    [8] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1135
        )

    [9] => stdClass Object
        (
            [user_type] => U
            [user_id] => 156
            [property_id] => 1053
        )
)

2 个答案:

答案 0 :(得分:1)

一种方法是循环数组和容器。在循环下,如果您的特定键匹配,将项目放在第一个匹配的项目(过滤类别),然后在完成后,合并其余项目。

$result = array(); // container
foreach($array2 as $k2 => $val2) {
    foreach($array1 as $k1 => $val1) {
        if($val2->property_id == $val1->property_id) { // if it matches
            $result[] = $val1; // put it inside
            unset($array2[$k2], $array1[$k1]); // remove to continue next set
            break;
        }
    }
}
$result = array_merge($result, $array1); // merge the rest

Sample Output

答案 1 :(得分:0)

如果我理解正确 - 您需要找到第一个和第二个之间的差异,然后将该元素附加到第二个数组

$array_diff = array_diff($first,$second);
$array_result = array_merge($second, $array_diff);