Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка многомерного массива

Сообщения:  [1-4] 

 
 автор: aexb   (15.11.2006 в 16:48)   письмо автору
 
   для: Shorr Kan   (15.11.2006 в 15:42)
 

идея вот такая. очень громоздко и подлежит доделыванию и упрощению. но идея.

<?
$arr
=array(
    
"1"=>array(
        
"tag"=>"WORD_1",
        
"type"=>"complete",
        
"level"=>"4",
        
"attributes"=>array(
            
"CL"=>"48",
            
"S"=>"511",
            
"M"=>"0.39",
            
"C"=>"0.0083"
        
)
    ),
    
"2"=>array(
        
"tag"=>"WORD_2",
        
"type"=>"complete",
        
"level"=>"4",
        
"attributes"=>array(
            
"CL"=>"48",
            
"S"=>"511",
            
"M"=>"0.2",
            
"C"=>"0.0083"
        
)
    ),
    
"3"=>array(
        
"tag"=>"WORD_3",
        
"type"=>"complete",
        
"level"=>"4",
        
"attributes"=>array(
            
"CL"=>"48",
            
"S"=>"511",
            
"M"=>"0.5",
            
"C"=>"0.0083"
        
)
    ),
    
"4"=>array(
        
"tag"=>"WORD_4",
        
"type"=>"complete",
        
"level"=>"4",
        
"attributes"=>array(
            
"CL"=>"48",
            
"S"=>"511",
            
"M"=>"8.5",
            
"C"=>"0.0083"
        
)
    ),

);

echo 
"<pre>";

//выдираем из элементов нужные значения для сравнения
foreach ($arr as $key=>$value) {
    
$k=1;
    foreach (
$value as $key_1=>$value_1) {
        if (
$k=="4") {
            foreach (
$value_1 as $key_2=>$value_2) {
                if (
$key_2=="M") {$znach[]=$value_2$massiv[]=$key;}
            }
        }
        
$k++;
    }
}

//сливаем массивы в один (взято с php.net)
$keys array_values( (array) $massiv );
$vals array_values( (array) $znach );
$n maxcount$keys ), count$vals ) );
$r = array();
for( 
$g=0$g<$n$g++ ) {
    
$r$keys$g ] ] = $vals$g ];
}

//производим нужную сортировку
asort($r);

//отображаем
foreach ($r as $key_out=>$val_out) {
    
print_r($arr[$key_out]);
}
?>

   
 
 автор: Trianon   (15.11.2006 в 16:34)   письмо автору
 
   для: Shorr Kan   (15.11.2006 в 15:42)
 

http://php.net/usort

   
 
 автор: aexb   (15.11.2006 в 16:01)   письмо автору
 
   для: Shorr Kan   (15.11.2006 в 15:42)
 

так куда чего сортировать-то? во всех четырех элементах величина [attributes]-[M] одинаковая :-)

   
 
 автор: Shorr Kan   (15.11.2006 в 15:42)   письмо автору
 
 


[3] => Array
        (
            [tag] => WORD
            [type] => complete
            [level] => 4
            [attributes] => Array
                (
                    [CL] => 48
                    [S] => 511
                    [M] => 0.39
                    [C] => 0.0083
                )

            [value] =>  cam
        )


Как подобный массив отсортировать по [attributes][M] ?

То есть,

[3] => Array - это третий элемент. Есть и первый, и второй, и четвертый... примерно так:


[1] => Array
        (
            [tag] => WORD
            [type] => complete
            [level] => 4
            [attributes] => Array
                (
                    [CL] => 48
                    [S] => 511
                    [M] => 0.39
                    [C] => 0.0083
                )

            [value] =>  cam
        )
[2] => Array
        (
            [tag] => WORD
            [type] => complete
            [level] => 4
            [attributes] => Array
                (
                    [CL] => 48
                    [S] => 511
                    [M] => 0.39
                    [C] => 0.0083
                )

            [value] =>  cam
        )
[3] => Array
        (
            [tag] => WORD
            [type] => complete
            [level] => 4
            [attributes] => Array
                (
                    [CL] => 48
                    [S] => 511
                    [M] => 0.39
                    [C] => 0.0083
                )

            [value] =>  cam
        )


Так вот, как мне эти элементы отсортировать по величине attributes-M ?

   

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования