Подача или балансировка массива с динамическим c сгенерированным индексом и значениями - PullRequest
1 голос
/ 04 мая 2020

В основном я хочу сбалансировать массив.

Массив, который я хочу сбалансировать, получен из БД и может быть неизвестен

Вот пример массива, извлеченного из БД, он может варьироваться

<?php
$arr_from_DB = array(
            '1'=>NULL,
            '2'=>1,
            '3'=>1,
            ); 

 $node_width_from_DB = 3;
 $node_depth_from_DB = 2;
?>

// Максимальная емкость была рассчитана из $ node_width_from_DB, $ node_depth_from_DB и была также сохранена в БД, смоделирована ниже для ширины = 3, глубины = 2 $ max_cap_of_array = 13;

// С $ arr_from_DB, поданным на дисплей fxn во внешнем интерфейсе, это результат enter image description here

// Что я хочу достичь, я хочу преобразовать $ arr_from_DB ниже ARray, считается, что индекс All Array с отрицательным значением генерируется динамически

<?php
$formated_arr = array(
            '1'=>NULL,
            '2'=>1,
            '3'=>1,
            '-1'=>1,
            '-2'=>2,
            '-3'=>2,
            '-4'=>2,
            '-5'=>3,
            '-6'=>3,
            '-7'=>3,
            '-8'=>-1,
            '-9'=>-1,
            '-10'=>-1,
            );
?>

// При подаче $ formated_arr на экран fxn во внешнем интерфейсе это результат Matrix Balance

ЧТО Я ПОПРОБОВАЛ ТАК ДАЛЬШЕ

<?php    
$arr_filled = RECfillMissingDownlineArr($arr_from_DB); 


var_dump($arr_filled);

  function RECfillMissingDownlineArr($selectedArr, $pointer=1){

    $node_width_from_DB = 3;
    $node_depth_from_DB = 2;

    //Max Capacity was caclulated from  $node_width_from_DB, $node_depth_from_DB AND WAS ALSO SAVED in DB , simulated below for width = 3 , depth = 2
    $max_cap_of_array = 13; 

    //var_dump($Allarr);
     if($pointer>= $max_cap_of_array){
        return $selectedArr;
     }


    $array_worked = array_count_values($selectedArr);
    $array_worked3 = array_keys($selectedArr);
    $array_worked2 = array_values($array_worked3);


            //$key_p =  $array_worked3[$pointer];


           foreach($array_worked as $key=>$value){

                 //echo 'Value nm'.$value.'<br>';
               if($value<$node_width_from_DB){



                 $key_p =  $key;
                 break;  
               }

           }



           $array_worked1 = array_keys($selectedArr, $key_p);
           for ($i=0; $i <$width ; $i++) {

               if(empty($array_worked1[$i])){
                   $key_pointer = $pointer * -1;
                  $selectedArr[$key_pointer] = $key;

                  $pointer++;

                   return RECfillMissingDownlineArr($selectedArr,$pointer);
               }

             }


     }

OUTPUT NULL, It's not what I want, it's returning null alltogether

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...