0

I have a multi dim. array with duplicate values. I need it to show only one single value of each in a dropdown, which in turn are used for a search Query. The indexs are not important here. I tried with array_map, serialize, array_unique and so on, but can't get it right. Some values allways comes out twice.

I'm on php version 4.3.2, so can't use functions made after that version.

The array looks like this:

Array (

[1] => Array
    (
        [1] => 0,9
        [2] => 1,3
        [3] => 1,6
        [4] => 1,5
        [5] => 0,0
        [6] => 1,2
    )

[2] => Array
    (
        [3] => 1,0
        [4] => 2,0
        [5] => 1,78
        [6] => 1,44
        [7] => 1,87
        [8] => 1,56
        [9] => 2,4
        [10] => 2,93
        [11] => 2,50
        [12] => 1,4
        [13] => 6,0
        [14] => 4,0
        [15] => 1,80
        [16] => 3,00
    )

[3] => Array
    (
        [5] => 1,0
        [6] => 1,2
        [7] => 1,5
        [8] => 1,6
    )

[4] => Array
    (
        [7] => 1,0
    )

[5] => Array
    (
        [1] => 1,0
        [2] => 1,5
        [3] => 2,0
        [4] => 2,5
        [5] => 3,0
        [6] => 3,5
        [7] => 4,0
        [8] => 4,5
    )

[6] => Array
    (
        [1] => 1,5
        [2] => 2,0
        [3] => 2,5
        [4] => 3,0
        [5] => 3,5
        [6] => 4,0
        [7] => 4,5
        [8] => 5,0
        [9] => 5,5
        [10] => 6,0
        [11] => 6,5
        [12] => 7,0
        [13] => 7,5
        [14] => 8,0
        [15] => 8,5
        [16] => 9,0
        [17] => 9,5
        [18] => 10,0
    )

[7] => Array
    (
        [15] => 0,65
        [16] => 0,75
        [17] => 0,85
        [18] => 0,90
        [19] => 1,00
        [20] => 1,10
        [21] => 1,15
        [22] => 1,25
        [23] => 1,50
        [24] => 1,55
        [25] => 1,60
        [26] => 1,80
        [27] => 1,85
        [28] => 2,00
        [29] => 2,10
    )

[8] => Array
    (
        [30] => 0,90
        [31] => 1,00
    )

[10] => Array
    (
        [34] => 0,65
        [35] => 0,75
        [36] => 0,85
        [37] => 0,90
        [38] => 1,00
        [39] => 1,10
        [40] => 1,15
        [41] => 1,25
        [42] => 1,50
        [43] => 1,55
        [44] => 1,60
        [45] => 1,80
        [46] => 1,85
        [47] => 2,00
        [48] => 2,10
    )

[11] => Array
    (
        [34] => 1,0
        [35] => 1,5
        [36] => 2,0
        [37] => 2,5
        [38] => 3,0
        [39] => 3,5
        [40] => 4,0
        [41] => 4,5
    )

[12] => Array
    (
        [43] => 1,00
    )

[13] => Array
    (
        [45] => 2,00
        [46] => 2,20
        [47] => 2,50
        [48] => 2,75
        [49] => 3,00
        [50] => 3,25
        [51] => 3,50
        [52] => 2,60
        [53] => 2,85
        [54] => 1,50
        [55] => 2,10
        [56] => 2,35
        [57] => 2,80
        [58] => 2,40
        [59] => 2,70
        [60] => 2,25
        [61] => 3,40
        [62] => 2,55
        [63] => 2,30
        [64] => 2,65
    )

)

Any help would be appreciated.

Mhystique
  • 57
  • 7
  • possible duplicate of [How to remove duplicate values from a multi-dimensional array in PHP](http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php) – Brewal Apr 03 '14 at 15:07

2 Answers2

0

To make each sub-array unique compared to other sub-arrays (the order is important):

$array = array_map('unserialize', array_unique(array_map('serialize', $array)));

To make only values within each sub-array unique:

$array = array_map('array_unique', $array);
AbraCadaver
  • 78,200
  • 7
  • 66
  • 87
0
$array = array_map('unserialize', array_unique(array_map('serialize', $array)));

is exactly what I tried, and from that same thread, but it comes out like this:

Array(
[1] => Array
    (
        [1] => 0,9
        [2] => 1,3
        [3] => 1,6
        [4] => 1,5
        [5] => 0,0
        [6] => 1,2
    )

[2] => Array
    (
        [3] => 1,0
        [4] => 2,0
        [5] => 1,78
        [6] => 1,44
        [7] => 1,87
        [8] => 1,56
        [9] => 2,4
        [10] => 2,93
        [11] => 2,50
        [12] => 1,4
        [13] => 6,0
        [14] => 4,0
        [15] => 1,80
        [16] => 3,00
    )

[3] => Array
    (
        [5] => 1,0
        [6] => 1,2
        [7] => 1,5
        [8] => 1,6
    )

[4] => Array
    (
        [7] => 1,0
    )

[5] => Array
    (
        [1] => 1,0
        [2] => 1,5
        [3] => 2,0
        [4] => 2,5
        [5] => 3,0
        [6] => 3,5
        [7] => 4,0
        [8] => 4,5
    )

[6] => Array
    (
        [1] => 1,5
        [2] => 2,0
        [3] => 2,5
        [4] => 3,0
        [5] => 3,5
        [6] => 4,0
        [7] => 4,5
        [8] => 5,0
        [9] => 5,5
        [10] => 6,0
        [11] => 6,5
        [12] => 7,0
        [13] => 7,5
        [14] => 8,0
        [15] => 8,5
        [16] => 9,0
        [17] => 9,5
        [18] => 10,0
    )

[7] => Array
    (
        [15] => 0,65
        [16] => 0,75
        [17] => 0,85
        [18] => 0,90
        [19] => 1,00
        [20] => 1,10
        [21] => 1,15
        [22] => 1,25
        [23] => 1,50
        [24] => 1,55
        [25] => 1,60
        [26] => 1,80
        [27] => 1,85
        [28] => 2,00
        [29] => 2,10
    )

[8] => Array
    (
        [30] => 0,90
        [31] => 1,00
    )

[10] => Array
    (
        [34] => 0,65
        [35] => 0,75
        [36] => 0,85
        [37] => 0,90
        [38] => 1,00
        [39] => 1,10
        [40] => 1,15
        [41] => 1,25
        [42] => 1,50
        [43] => 1,55
        [44] => 1,60
        [45] => 1,80
        [46] => 1,85
        [47] => 2,00
        [48] => 2,10
    )

[11] => Array
    (
        [34] => 1,0
        [35] => 1,5
        [36] => 2,0
        [37] => 2,5
        [38] => 3,0
        [39] => 3,5
        [40] => 4,0
        [41] => 4,5
    )

[12] => Array
    (
        [43] => 1,00
    )

[13] => Array
    (
        [45] => 2,00
        [46] => 2,20
        [47] => 2,50
        [48] => 2,75
        [49] => 3,00
        [50] => 3,25
        [51] => 3,50
        [52] => 2,60
        [53] => 2,85
        [54] => 1,50
        [55] => 2,10
        [56] => 2,35
        [57] => 2,80
        [58] => 2,40
        [59] => 2,70
        [60] => 2,25
        [61] => 3,40
        [62] => 2,55
        [63] => 2,30
        [64] => 2,65
    )
)

And I still got multiple values like 1,0

Mhystique
  • 57
  • 7