簡體   English   中英

從一個單獨的數組中查找相同的數組值,然后將其值合並到新的數組組中

[英]Find Same Array value from one single array and merge its value into new array group wise

我有一個多維數組,並且從該數組中我想從第一個數組的相同id1創建一個新數組,並希望將所有匹配的子數組值及其元素都放入其內部數組中

以下是我擁有的數組:

Array
(
    [0] => Array
        (
            [id1] => 109891
            [id2] => 67
        )

    [1] => Array
        (
            [id1] => 828393
            [id2] => 67
        )

    [2] => Array
        (
            [id1] => 828393
            [id2] => 68
        )

    [3] => Array
        (
            [id1] => 816714
            [id2] => 70
        )

    [4] => Array
        (
            [id1] => 816714
            [id2] => 67
        )

    [5] => Array
        (
            [id1] => 816714
            [id2] => 68
        )
)

我想要這樣的輸出:

Array
(
    [109891] => Array
        (
            [0] => Array
            (
                [id2] => 67
            )
        )
     [828393] => Array
        (
            [0] => Array
            (
                [id2] => 67
            )
            [1] => Array
            (
                [id2] => 68
            )
        )  
     [816714] => Array
        (
            [0] => Array
            (
                [id2] => 70
            )
            [1] => Array
            (
                [id2] => 67
            )
            [2] => Array
            (
                [id2] => 68
            )
        )     

)

任何幫助,將不勝感激

原點數組:

$array = array(
        array('id1' => '109891', 'id2' => '67'),
        array('id1' => '828393', 'id2' => '67'),
        array('id1' => '828393', 'id2' => '68'),
        array('id1' => '816714', 'id2' => '70'),

    );

使用此foreach:

$new = array();
foreach($array as $element) {
    $new[$element['id1']][] = array('id2' => $element['id2']);
}

或此功能:

function editMyArray($array) {
    $newArray = array();
    foreach($array as $element) {
        $newArray[$element['id1']][] = array('id2' => $element['id2']);
    }
    return $newArray;
}

輸出:

echo "<pre>";
print_r($new);
echo "</pre>";

Array
(
    [109891] => Array
        (
            [0] => Array
                (
                    [id2] => 67
                )

        )

    [828393] => Array
        (
            [0] => Array
                (
                    [id2] => 67
                )

            [1] => Array
                (
                    [id2] => 68
                )

        )

    [816714] => Array
        (
            [0] => Array
                (
                    [id2] => 70
                )

        )

)

應該這樣做:

$output = array();
foreach($input as $r) {
    $id1 = $r['id1'];
    if(!isset($output[$id1])) {
        $output[$id1] = array();
    }
    $output[$id1][] = array('id2' => $r['id2']);
}
print_r($output);

使用以下經過測試的代碼:

$i = 0;
$sepr = 0;
$arr = array();
foreach($your_array as $your_reslut_array) {
$k = $i; $k = ($k > 0 ? $k-1 : 0);
foreach($your_reslut_array as $key => $value) {
    if($key != "ID" && $value != $your_reslut_array[$k][$key]) {
        $sepr++;
    }
}
$arr[$sepr][] = $car;
$i++;
}

print_r($arr);

暫無
暫無

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

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