В основном я хочу сбалансировать массив.
Массив, который я хочу сбалансировать, получен из БД и может быть неизвестен
Вот пример массива, извлеченного из БД, он может варьироваться
<?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](https://i.stack.imgur.com/XxBXh.png)
// Что я хочу достичь, я хочу преобразовать $ 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](https://i.stack.imgur.com/GZfcX.png)
ЧТО Я ПОПРОБОВАЛ ТАК ДАЛЬШЕ
<?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
?>