2013-07-05 4 views
0

У меня есть такой массив, где каждое значение ключа содержит метаинформацию изображения, деленное на запятую.
Для получения информации о метаде A,B,C, A представляет собой идентификационный номер изображения, B порядок изображения и C цвет.Разбиение массива и получение уникальных идентификаторов массива

Array ([0] => 657,1,1 
     [1] => 658,2,1 
     [2] => 659,3,1 
     [3] => 660,4,1 
     [4] => 661,5,1 
     [5] => 662,6,1 
     [6] => 663,7,1 
     [7] => 875,15,3 
     [8] => 877,17,3 
     [9] => 874,14,3 
     [10] => 869,9,2 
     [11] => 872,12,2 
     [12] => 959,13,2) 

Я хочу получить список уникальных цветов из всего значения массива. В таком примере это будет

echo element[0]; result = 1 
echo element[1]; result = 2 
echo element[2]; result = 3 <- edited 

и так далее, если в массиве имеется более 3 цветов.

Не могли бы вы помочь мне в этом? Эти вещи для меня очень тяжелы.

+0

На каком языке это? Выглядит как PHP, но перед переменными нет '' '. – Barmar

+0

Можете ли вы прояснить вопрос? Почему третий результат 'element [3]', а не 'element [2]'? – Barmar

+0

Бармар, сделал это. Да, это PHP – jam

ответ

0

Если я понимаю, что вы хотите правильно ...

$colors = array(); 
$list = Array (0 => '657,1,1', 1 => '658,2,1', 2 => '659,3,1', 3 => '660,4,1', 4 => '661,5,1', 5 => '662,6,1', 6 => '663,7,1', 7 => '875,15,3', 8 => '877,17,3', 9 => '874,14,3', 10 => '869,9,2', 11 => '872,12,2', 12 => '959,13,2'); 
foreach ($list as $k=>$v){ 
    list($id, $order, $color) = explode(',',$v); 
    $colors[] = $color; 
} 
$colors = array_unique($colors); 
sort($colors); 

... создаст массив $colors, который имеет ...

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

... где 1, 2,3 - это цвета, найденные в $list

+0

Noekio, мне нужно больше уникальных цветов, а не их количество. – jam

+0

Я вижу ... обновил код – neokio

+0

Спасибо, Neokio. Это получилось красиво. – jam

0

Вы хотите сделать что-то подобное?

$array = array ('657,1,1', '658,2,1', '659,3,1'); 
function getColor($a) { 
    $a = explode(',', $a); 
    return $a[2]; 
} 
echo getColor($array[0]); 
1

Я думаю, это может быть то, что вы хотите:

$element = array_values(array_unique(array_map(function($x) { 
    $meta = explode(',', $x); 
    return $meta[2]; 
}, $input))); 
sort($element); 
+0

черт возьми, этот код туго! – neokio

+0

это замечательно, но у него есть странные ключи 'Array ([0] => 1 [7] => 3 [10] => 2)' – jam

+0

Добавлен вызов 'array_values ​​()' для перенумерации их из 0 – Barmar

Смежные вопросы