phpbar.de logo

Mailinglisten-Archive

[php] Zweidimensionales Array unique machen.

[php] Zweidimensionales Array unique machen.

Jakob Buchgraber jakob.buchgraber at googlemail.com
Die Feb 13 22:04:30 CET 2007


Hi!

Versuch's mal damit:

<?php

$array = array (
11 => array (0 => null, 1 => null, 2 => null),
12 => array (0 => null, 1 => null, 2 => null),
13 => array (0 => 1, 1 => 1, 2 => null),
14 => array (0 => null, 1 => null, 2 => 1)
);

$hashes = array ();

foreach ($array as $key => $subarray) {
    if (!is_array ($subarray)) continue;
   
    $val = "";
   
    foreach ($subarray as $value) {
        $val .= $value;
    }
   
    $val = md5 ($val);
   
    if (in_array ($val, $hashes)) {
        unset ($array[$key]);
    } else {
        $hashes[] = $val;
    }
}

$array = array_values ($array);

print_r ($array);
?>

Je nachdem welche Daten gespeichert werden, kannst du das md5 auch 
weglassen (Rechenleistung) oder einen anderen Alogrithmus verwenden. 
Mein Gedanke dabei war nur, dass wenn du z.B. Texte oder ähnliches im 
Array speicherst, so ist es schneller und speicherschonender einen 32 
Zeichen langen Hashcode zu vergleichen als z.B. einen 200 Zeichen langen 
Text. Beinhaltet das Array jedoch lediglich Zahlen, so kannst du das md5 
natürlich weglassen.

Ich bekomme folgende Ausgabe:
Array
(
    [0] => Array
        (
            [0] =>
            [1] =>
            [2] =>
        )

    [1] => Array
        (
            [0] => 1
            [1] => 1
            [2] =>
        )

    [2] => Array
        (
            [0] =>
            [1] =>
            [2] => 1
        )

)

MfG Jay

php::bar PHP Wiki   -   Listenarchive