Помогите мне отсортировать двумерный массив, только просьба не кидайте ссылки на мануалы, я целую неделю пытался и все перерыл)
У меня есть массив
[php]$mas[]=array(
array("red"=>"yes", "blue"=>"2", "blak"=>"no",);
array("red"=>"yes", "blue"=>"1", "blak"=>"no",);
array("red"=>"yes", "blue"=>"5", "blak"=>"no",);
array("red"=>"yes", "blue"=>"3", "blak"=>"no",);
);
мне нужно отсортировать массив по значению поля blue. тоесть должно получится
array(
array("red"=>"yes", "blue"=>"1", "blak"=>"no",);
array("red"=>"yes", "blue"=>"2", "blak"=>"no",);
array("red"=>"yes", "blue"=>"3", "blak"=>"no",);
array("red"=>"yes", "blue"=>"5", "blak"=>"no",);
)
Спустя 19 минут, 19 секунд (17.11.2010 - 22:39) sergeiss написал(а):
ОК, я не дам ссылку на мануал, как ты просил Я просто назову функцию, которая тебе нужна. А в мануале ты сам её найдёшь
usort() называется. У неё в качестве 2-го параметра передаётся имя фунции, определенной пользователем. То есть тобой. Вот эта функция и помогает отсортировать.
PS. И кстати. "Черный" по-английски пишется black, а у тебя blak написано. И не черномазый, и не афроамериканец... Не пойми что, вобщем, получается
PPS. И тему перенесу в раздел "для начинающих". Потому что "для знатоков" тут не годится
usort() называется. У неё в качестве 2-го параметра передаётся имя фунции, определенной пользователем. То есть тобой. Вот эта функция и помогает отсортировать.
PS. И кстати. "Черный" по-английски пишется black, а у тебя blak написано. И не черномазый, и не афроамериканец... Не пойми что, вобщем, получается
PPS. И тему перенесу в раздел "для начинающих". Потому что "для знатоков" тут не годится
Спустя 36 минут, 57 секунд (17.11.2010 - 23:16) major28 написал(а):
sergeiss спасибо, не мог бы ты мне написать что удет в моем случае?) зарание огромное спасибо!_
Спустя 10 минут, 6 секунд (17.11.2010 - 23:26) sergeiss написал(а):
Да без проблем
Заходишь по той ссылке, что в моей подписи, затем вверху страницы, в строке поиска, вводишь usort, затем читаешь описалово. Там даже примеры есть! Можешь скачать себе и локальную версию хэлпа. Это еще проще... Всего 3-4 клика мышкой...
Или ты хочешь, чтобы я сюда скопипастил всё? А зачем оно мне надо, скажи, плз!
Заходишь по той ссылке, что в моей подписи, затем вверху страницы, в строке поиска, вводишь usort, затем читаешь описалово. Там даже примеры есть! Можешь скачать себе и локальную версию хэлпа. Это еще проще... Всего 3-4 клика мышкой...
Или ты хочешь, чтобы я сюда скопипастил всё? А зачем оно мне надо, скажи, плз!
Спустя 10 минут, 14 секунд (17.11.2010 - 23:36) major28 написал(а):
ну плз)))) просто я неделю тупил и у меня башка совсем не соображает сейчас))))
Спустя 55 минут, 7 секунд (18.11.2010 - 00:32) major28 написал(а):
sergeiss Помоги плиз, просто у этой функции видать есть косяки))
у меня после 1 идет всегда 10 а не 2, а после 2 20 а не 3 и т.д.
у меня после 1 идет всегда 10 а не 2, а после 2 20 а не 3 и т.д.
function cmp($a, $b)
{
return strcmp($a["fruit"], $b["fruit"]);
}
$fruits[0]["fruit"] = 1;
$fruits[1]["fruit"] = 4;
$fruits[2]["fruit"] = 3;
$fruits[3]["fruit"] = 0;
$fruits[4]["fruit"] = 0.5;
$fruits[5]["fruit"] = 10;
$fruits[6]["fruit"] = 11;
$fruits[7]["fruit"] = 30;
usort($fruits, "cmp");
while (list($key, $value) = each($fruits)) {
echo "\$fruits[$key]: " . $value["fruit"] . "<br>
";
}
Спустя 3 минуты, 39 секунд (18.11.2010 - 00:35) sergeiss написал(а):
Цитата (major28 @ 18.11.2010 - 01:32) |
у меня после 1 идет всегда 10 а не 2, а после 2 20 а не 3 и т.д. |
И это совершенно логично, потому что ты сравниваешь как строки, а не как числа!!! В функции сравнения убери strcmp и сделай сравнение чисел.
Спустя 2 минуты, 39 секунд (18.11.2010 - 00:38) major28 написал(а):
Круто!) работает!!! Большое ваще огромное спасибо!!!)
Последний вопросик)
Объясни плиз как логически работает эта штука
больше сегодня не побеспокою , обещаю!)
Последний вопросик)
Объясни плиз как логически работает эта штука
function cmp($a, $b)
{
return $a["fruit"]>$b["fruit"];
}
больше сегодня не побеспокою , обещаю!)
Спустя 1 час, 24 минуты, 36 секунд (18.11.2010 - 02:02) kirik написал(а):
Цитата (major28 @ 17.11.2010 - 16:38) |
Объясни плиз как логически работает эта штука |
Если левая часть больше правой, то возвращает true, если меньше - false.