PHP. Почему программа не дает перевернуть массив и как это сделать?

Уважаемые коллеги!

Исправляю ошибку. Как видно на картинке, суммы денег предшествуют "наименованию учредителя". Я решил, что дело в переменной $history_fns, потому что по ходу дела массив в ней меняет порядок ключей и ошибочный вывод ему соответствует.. Я попробовал на разных этапах кода перевернуть ассоциированный массив обратно, пробовал разными способами: arsort(), ksort(), sort(), array_reverse($history_fns) и тд. Вывод при этом либо пропадает вовсе, либо ничего не происходит.. Подскажите, пожалуйста, как можно было бы решить эту проблему?

введите сюда описание изображения

$history_fns = [];
$xq = 0;
/* $history_fns['Совладельцы'][$value1[grn_date]][delete][$xq] */
                            
foreach ($history_egrul[data] as $key => $value) { 
    foreach ($value[changes] as $key1=> $value1) {
        if($value1[title][value]=='uchr_dol' || $value1[title][value]=='uchr') {
            $history_fns['Совладельцы'][$value1[grn_date]][delete][$xq] = $value1[val_old];
            $history_fns['Совладельцы'][$value1[grn_date]][add][$xq] = $value1[val_new];
            
        }
                    
                if($value1[title][value]=='ruk') {
        $history_fns['Руководитель'][$value1[grn_date]][delete][$xq] = $value1[val_old];
            /* var_dump($history_fns['Руководитель'][$value1[grn_date]][delete][$xq]); */
        $history_fns['Руководитель'][$value1[grn_date]][add][$xq] = $value1[val_new];
                    
        }

                if($value1[title][value]=='addr') {
        $history_fns['Адрес'][$value1[grn_date]][delete][$xq] = $value1[val_old];   
        $history_fns['Адрес'][$value1[grn_date]][add][$xq] = $value1[val_new];
                    
        }
    
        if($value1[title][value]=='okved') {
        $history_fns['Основной вид деятельности'][$value1[grn_date]][delete][$xq] = $value1[val_old];   
        $history_fns['Основной вид деятельности'][$value1[grn_date]][add][$xq] = $value1[val_new];
            
        }
    
                if($value1[title][value]=='uchr_inn') {
        $history_fns['ИНН совладельцев'][$value1[grn_date]][delete][$xq] = $value1[val_old];   
        $history_fns['ИНН совладельцев'][$value1[grn_date]][add][$xq] = $value1[val_new];
                    
        }
        
                if($value1[title][value]=='Usumma') {
        if($value1[val_old][0][value]!=0) {$history_fns['Доля организации'][$value1[grn_date]][delete][$xq] = $value1[val_old];   }
        if($value1[val_new][0][value]!=0) { $history_fns['Доля организации'][$value1[grn_date]][add][$xq] = $value1[val_new];   }
        }
        
        $xq++;
    //   echo "<br><br>";
    var_dump($history_fns);              
    }
} // print_r($history_egrul);

/* $s = array_reverse($history_fns);
var_dump($s); */
var_dump($history_fns);
//   print_r($history_egrul);         
                    if($history_fns) {    
                        
    ?>

<div class="egrul-content-tab <?=$fns_class?>" id="egrul-tab-content-1">
<div class="table">
<div class="table-body fns">

<?php      $t = 0; $hide = '';                  foreach ($history_fns as $key => $value) {
        $t++;    if($t>3) {$hide = ' style="display:none;"'; $show_button = 1;}

?>
<div class="table-row" <?=$hide?>>
    
<div class="title">
    <h3><?=$key?></h3>
</div> 
    <?php foreach ($value as $key1 => $value1) { ?>
<div class="table-row-inner">
    <div class="table-col date">
        <span><?=date("d.m.Y", strtotime($key1));?></span>
    </div>
    <div class="table-col info-old">
    
        <div class="item">
            <?php
                
            foreach ($value1[delete] as $key2 => $value2) {
                
                foreach ($value2 as $key3 => $value3) {
                    $change_t=$change_v = '';
                    
                    if(is_array($value3)) {
                        //  echo "<br><br>";
                        // print_r($value1[delete]);
                        // echo "<br><br>";
                        //   print_r($value1[add]);
                        if($value1[delete][$key2][$key3][header]!=$value1[add][$key2][$key3][header]) {$change_t =  ' class="rename"';} 
                        if($value1[delete][$key2][$key3][value]!=$value1[add][$key2][$key3][value]) {$change_v =  '<span'.' class="rename">';} 
                        //  echo $value[$key1][delete][$key2][$key3][title].'!='.$value[$key1][add][$key2][$key3][title];
                        echo '<p style="word-break: break-word;">'; if($value3[header]!='Должность:' && $value3[header]) {echo '<span'.$change_t.'>'; echo Users::DemoHide($value3[header],$demo , 5) ;  echo '</span>';}    
                            arsort($value3[value]);
                            echo $change_v.Users::DemoHide($value3[value],$demo , 3 );
                            if($value1[delete][$key2][$key3][value]!=$value1[add][$key2][$key3][value]) { echo '</span>'; }
                        if($key=='Руководитель' && !$value3[header])    {   echo '<span class="icon-name"></span>'; }
                            echo '</p>'; 
                    }
                }
            }
        ?>

Ответы (1 шт):

Автор решения: Ivan Dudarev

Замените строку $history_fns = []; на

<?php

/* Вот тут укажите нужный порядок ключей */
$history_fns = [
    'Совладельцы' => [],
    'Руководитель' => [],
    'Адрес' => [],
    'Основной вид деятельности' => [],
    'ИНН совладельцев' => [],
    'Доля организации' => [],
];
→ Ссылка