download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Сериозен проблем с масив в PHP

Автор
Съобщение
phrozencrew
Пон, 24.12.07, 19:08
Здрасти хора,
В момента дълбая дъното! Не мога да разбера, защо тъпия интерпретатор не желае да ми сортира масив по стойностите без да трие ключовете.
Говоря за асоциативен масив. Ето това ми е масива:
$masiv = array(   "001" => "krushi",
            "002" => "slivi",
            "003" => "dinia",
            "003" => "pupesh",
            "004" => "kivi",
            "005" => "limon"
            );

Във Perl всичко си се получава, но в PHP не мога да схвана как да сортирам масива, защото когато използвам sort($masiv) ми изтрива ключовете 001, 002 .. и т.н.
Ако използвам ksort($masiv) - PHP запазва съдържанието на масива без промяна, но ключовете и така са ми сортирани, така, че не ме устройва. Има един вариант, който би ме накарал да си прегриза сухожилията на коляното - да сменя местата на ключовете и стойностите.
Ето как го дебъгвам:
<?php
$masiv = array(   "001" => "krushi",
            "002" => "slivi",
            "003" => "dinia",
            "003" => "pupesh",
            "004" => "kivi",
            "005" => "limon"
            );
foreach ($masiv as $key => $value){
   echo $key." : ".$value."<br>n";
}
/* Изход:
001 : krushi<br>
002 : slivi<br>
003 : pupesh<br>
004 : kivi<br>
005 : limon<br>
*/
ksort($masiv);
echo "<br>nn";
 
foreach ($masiv as $key => $value){
   echo $key." : ".$value."<br>n";
}
/* Изход:
001 : krushi<br>
002 : slivi<br>
003 : pupesh<br>
004 : kivi<br>
005 : limon<br>
*/
 
sort($masiv);
echo "<br>nn";
foreach ($masiv as $key => $value){
   echo $key." : ".$value."<br>n";
}
 
/* Изход:
0 : kivi<br>
1 : krushi<br>
2 : limon<br>
3 : pupesh<br>
4 : slivi<br>
*/
?>

Разбира се пробвах и print_r() - все тая - грешката си я има! От къде на къде ще ми променя съдържанието на масива?! Fu*k..
Да не би проблема да е в Windows интерпретатора? Всъщност това бъг ли е? Надявах се, че поне в 5-а версия на PHP ситуацията да е малко по-свежа, но уви! Май за сериозните проекти Perl си остава най-добрия избор.. или греша? Някой сблъсквал ли се е с подобен бъг на интерпретатора и как го е решил?
Много ще съм МНОГО благодарен за каквито и да било насоки за размисъл!

phrozencrew
Пон, 24.12.07, 20:12
Уфф, намерих колая:
asort($masiv);
echo "<br>nn";
foreach ($masiv as $key => $value){
	echo $key." : ".$value."<br>n";
}

Загадката е скрита в asort(). Ама съм магаре!
Както си има ksort() така има и asort() за асоциативни масиви.
Дано и на някой друг да му е полезна темата.

insecteater
Пон, 24.12.07, 20:47

RE: Сериозен проблем с масив в PHP

” ... Има един вариант, който би ме накарал да си прегриза сухожилията на коляното ... „

Специално за масивите php има какви ли не функции - с лопата да ги ринеш. По някой път и аз се мотая като муха без глава че да се сетя кое точно за какво е, ама важното е че има за масивите - не е като да няма както в други езици.

Успех в масивните битки , нито сме първите, нито сме последните които ще се борим с тях.

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.