php - 使用动态生成的索引和值归档或平衡数组
问题描述
基本上我想平衡一个数组。
我要平衡的数组是从数据库中检索的,可能是未知的
这是从 DB 检索到的示例数组,它可能会有所不同
<?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 并且还保存在 DB 中,下面模拟宽度 = 3 ,深度 = 2 $max_cap_of_array = 13;
//将 $arr_from_DB 馈送到前端的显示 fxn,这是结果
//我想要实现的,我想将$arr_from_DB转换为ARray下面,所有带有负数的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,这是结果
到目前为止我尝试了什么
<?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
?>
解决方案
推荐阅读
- html - 创建标题/内容 CSS 网格布局的更简洁方法
- dynamics-crm - 我无法在 Dynamics365 中禁用用户
- javascript - 将每个字母更改为大写并将其括在括号中
- arrays - 使用 apply 从矩阵构建特征张量
- python - 读取文件并在 tkinter 中写入行的 Python 函数
- etl - 组合不同的数据流并通过排序输出创建 .txt 文件
- python - 如何避免指数项的数值溢出错误?
- javascript - JS总时间计算
- dwarf - 为什么使用 TAG_variable 和 TAG_base_type 冗余属性 DW_AT_endianity?
- javascript - 如何在 Aframe 中更改相机或热点位置