[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск в ассоциативном (многомерном массиве)?
Stasonix
имеется ассоциативный массив (допустим $table) вида:
Array
(
[0] => Array
(
[name] => grey
[rgb] => rgb(128, 128, 128)
)

[1] => Array
(
[name] => green
[rgb] => rgb(0, 128, 0)
)

[2] => Array
(
[name] => white
[rgb] => rgb(255, 255, 255)
)

[3] => Array
(
[name] => black
[rgb] => rgb(0, 0, 0)
)
)

далее, имеется 2-й массив, одномерный, вида:
$color[] = Array("green","white","black");

так вот, как найти rgb цветов из 2-го массива в 1-м и вывести на экран?



Спустя 14 минут, 59 секунд (19.11.2011 - 03:20) Игорь_Vasinsky написал(а):
для начала сопаставь цвета к одному виду.

а то - есть мыло, искать - в шиле

Спустя 5 минут, 9 секунд (19.11.2011 - 03:26) Stasonix написал(а):
Цитата (Игорь_Vasinsky @ 19.11.2011 - 00:20)
для начала сопаставь цвета к одному виду.

а то - есть мыло, искать - в шиле

если бы так можно было, я бы уже давно так сделал и забыл.

Спустя 15 минут, 24 секунды (19.11.2011 - 03:41) dadli написал(а):
$table = array(
array("name"=>"green","rgb"=>"rgb(0, 128, 0)"),
array("name"=>"white","rgb"=>"rgb(255, 255, 255)"),
array("name"=>"black","rgb"=>"rgb(0, 0, 0)")
);

$color = array("white","black","red");


$arr_color_names = array();
foreach ($table as $key=>$val) {
array_splice($arr_color_names,$key,1,$table[$key]["name"]);
}

$mas2 = array_intersect($arr_color_names,$color);



foreach ($table as $key => $val) {
if (in_array($table[$key]["name"],$mas2)) {
echo $table[$key]["rgb"]."<br>";
}
}


?

Спустя 4 минуты, 39 секунд (19.11.2011 - 03:46) Stasonix написал(а):
Спасибо dadli, зачетные тату!

Спустя 15 минут, 14 секунд (19.11.2011 - 04:01) dadli написал(а):
Stasonix
да незачто smile.gif

Спустя 5 часов, 45 минут, 54 секунды (19.11.2011 - 09:47) Игорь_Vasinsky написал(а):
Цитата
$table = array(
array("name"=>"green","rgb"=>"rgb(0, 128, 0)"),
array("name"=>"white","rgb"=>"rgb(255, 255, 255)"),
array("name"=>"black","rgb"=>"rgb(0, 0, 0)")
);


blink.gif так я про это и говорил

Спустя 1 час, 29 минут, 37 секунд (19.11.2011 - 11:16) sergeiss написал(а):
То есть, у тебя в первом массиве всегда в 'name' имеется четко определенное название, а во втором (одномерном) массиве есть элементы, полностью соответствующие этим названиям? Я правильно понял?
Если "да", то тогда я бы предложил тебе переделать первый массив, заменив ключи на ассоциативные:


$rgb_values:
Array
(
[grey] => Array
(
[name] => grey
[rgb] => rgb(128, 128, 128)
)

[green] => Array
(
[name] => green
[rgb] => rgb(0, 128, 0)
)

[white] => Array
(
[name] => white
[rgb] => rgb(255, 255, 255)
)

[black] => Array
(
[name] => black
[rgb] => rgb(0, 0, 0)
)
)


Тогда твоя задача решается очень просто :)


// исходные цвета
$color[] = Array('green','white','black');

// компоненты цветов
$rgb[]=array( $rgb_values['green']['rgb'], $rgb_values['white']['rgb'], $rgb_values['black']['rgb']);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.