技术标签: create array php
最佳答案
Here is your desired solution.
class CategoryTree{
public $padding_array;
public function __construct(){
$this->padding_array = array();
}
public function getTreeArray($data_array){
foreach($data_array as $i=>$data){
if($data['id'] == $data['parent']) $data_array[$i]['parent'] = 0;
}
return $this->getCategoryTreeArray($data_array);
}
public function getCategoryTreeArray($elements, $parent_id = 0){
$branch = array();
foreach ($elements as $element) {
if ($element['parent'] == $parent_id) {
$children = $this->getCategoryTreeArray($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[$element['id']] = $element;
}
}
return $branch;
}
public function getCatgoryPadingArray($tree_array, array &$padding_array, $depth=0){
foreach ($tree_array as $id => $data_array) {
$padding_array[$id] = str_repeat('-', $depth).$data_array['name'];
if(is_array($data_array) && array_key_exists('children', $data_array)){
$this->getCatgoryPadingArray($data_array['children'], $padding_array , $depth+1);
}
}
}}
Using class:
$data_array = array(); // your array data
$tree_object = new CategoryTree();
$category_tree_array = $tree_object->getTreeArray($data_array);
$tree_object->getCatgoryPadingArray($category_tree_array, $tree_object->padding_array);
$category_padding_array = $tree_object->padding_array;
echo('
');
print_r($category_padding_array);
echo('
');
参考答案2
Try this
$new = array();
foreach ($data_array as $a){
$new[$data_array['parentid']][] = $a;
}
$tree = createTree($new, array($data_array[0]));
print_r($tree);
function createTree(&$list, $parent){
$tree = array();
foreach ($parent as $k=>$l){
if(isset($list[$l['id']])){
$l['children'] = createTree($list, $list[$l['id']]);
}
$tree[] = $l;
}
return $tree;
}
参考答案3
If you look at this example, you should be able to figure out that all you need to do is replace the array name and values to accommodate your requirements. Clearly your data is not numbers so you need to find out for yourself how you would deal with the vehicle names.
$tmpArray = array(array("one",array(1,2,3)),array("two",array(4,5,6)),array("three",array(7,8,9)));
And use print to check the structure
print_r($tmpArray);
参考答案4
You can do it with recursive calling of custom function or like this:
$data_array = array(
array('id' => 1, 'parent_id' => 1, 'name' => 'Air Vehicles'),
array('id' => 2, 'parent_id' => 2, 'name' => 'Land Vehicles'),
array('id' => 3, 'parent_id' => 3, 'name' => 'Water Vehicles'),
array('id' => 4, 'parent_id' => 2, 'name' => 'Bikes'),
array('id' => 5, 'parent_id' => 2, 'name' => 'Cars'),
array('id' => 6, 'parent_id' => 1, 'name' => 'Aero Planes'),
array('id' => 7, 'parent_id' => 1, 'name' => 'Helicopter'),
array('id' => 8, 'parent_id' => 3, 'name' => 'Ships'),
array('id' => 9, 'parent_id' => 1, 'name' => 'Hoverboard'),
array('id' => 10, 'parent_id' => 2, 'name' => 'Hoverboard'),
array('id' => 11, 'parent_id' => 4, 'name' => 'R1 Kawasaki'),
array('id' => 12, 'parent_id' => 4, 'name' => 'Suzuki Hayabusa'),
);
$tree = array();
foreach ($data_array as $k => &$val) {
if ($val['parent_id'] == $val['id']) {
if (empty($tree[$val['parent_id']])) {
$tree[$val['parent_id']] = array();
}
$tree[$val['parent_id']] = array_merge($tree[$val['parent_id']], $val);
} else {
$tree[$val['parent_id']]['sub'][] = $val;
}
}
print_r($tree);
参考答案5
For creating a tree array use a Recursive function. This is working perfectly for me :-
foreach($data_array as $i=>$data)
{
if($data['id'] == $data['parent_id']) $data_array[$i]['parent_id'] = 0;
}
function buildTree(array $elements, $parentId = 0)
{
$branch = array();
foreach ($elements as $element)
{
if ($element['parent_id'] == $parentId)
{
$children = buildTree($elements, $element['id']);
if ($children) $element['children'] = $children;
$branch[] = $element;
}
}
return $branch;
}
$tree = buildTree($data_array);
echo '
', print_r($tree, TRUE);
小编今天跟大家分享一下用proteus7.8做的基于DS1302模块的时钟电路设计的原理图如下:_基于51单片机与spi数据总线的设计
研究机械臂的正向运动学需要从机械臂的变换矩阵开始。变换矩阵可以说有两种形式,一种产生了标准D-H参数,另一种产生了改进D-H参数表。标准D-H参数——变换矩阵引用一些博客的图片,以及我多次的试验,在这里记下来。在此之前,需要重点强调的是,都是相对于当前的运动坐标系的,根据机械臂的左乘和右乘的链式法则,这是都是使用矩阵右乘。标准D-H参数法的变换矩阵的顺序是,比如有两个坐标系,一个是坐标i,一个是坐标系j。按照Z-X的顺序:先绕坐标系i的Z轴旋转θ角,该值便为θ1。使得Xi轴与Xj轴平行。在沿_机械臂正运动学
MySQL支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值。与整数类型一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器。例如,语句FLOAT (5,2)规定显示的值不会超过5位数字,小数点后面带有2位数字。看下面的示范举例:mysql> insert int..._mysql 浮点数
A History of Modern Computing-现代计算机历史 (英文原版)Ceruzzi Paul E.This engaging history covers modern computing from the development of the first electronic digital computer through the dot-com crash. The au..._a history of modern computing
离散数学的可传递性判断:利用笨方法找:利用矩阵表示方法,遍历这个矩阵如果遇到一个等于1的位置,记录位置,利用其纵坐标当下一个数的横坐标,在此横坐标下找到是1的位置,记录这个位置,在利用上一个数位置的横坐标和这个数的纵坐标找到一个新的位置,如果这个位置上是1,那么这个数就具有可传递性,然后继续遍历进行这个循环操作,知道检查到所有的数都对上了,这个二元关系才可说具有可传递性,有一个不符的都不是_二元关系
1. Linux cp简介Linux上最常用的命令之一,用于复制文件。支持文件复制、复制后重命名、建立软链接、建立硬链接、递归复制子目录等功能。2. 使用例子1:cp结合相当路径把当前目录上的cp1.txt,复制到上一级目录[root@zcwyou]# cp cp1.txt ../3. 使用例子2:复制一个文件到指定目录把/etc/passwd这个文件复制到/var/tmp/,新文件的绝对路径为/..._cp 重命名
智能码流模式下,LiveGBS的分屏小窗口会播放低码流视频,当播放器全屏后,会自动切换到高清视频播放。解决了分屏播放流畅和分屏窗口个数的问题。_浏览器支持播放监控的数量
ElementUI 日期选择器时间选择范围限制ElementUI是饿了么推出的一套基于vue2.x的一个ui框架。官方文档也很详细,这里做一个element-ui日期插件的补充。官方文档中使用picker-options属性来限制可选择的日期,这里举例子稍做补充。文章目录ElementUI 日期选择器时间选择范围限制单个输入框情景1: 设置选择今天以及今天之后的日期情景2: 设置选择今天以及今天以前的日期情景3: 设置选择今天之后的日期(不能选择当天时间)情景4: 设置选择今天之前的日期(不能选择当天
原因样本数量太少,取样方法错误,样本标签错误包含噪声等,导致样本和想要实现的分类标准不匹配解决方法数据角度数据增强模型角度降低模型复杂度(神经网络层数,树的深度)模型对数据的依赖角度正则化方法(L1,L2 提前停止,dropout,看验证集loss)集成学习权值衰减..._小样本发现数据集的过拟合
我们近期在做项目的时候用到了WCF,之前已经看了部分视频,对于WCF有了一定的了解,但仅限于能够根据搭建好的框架使用WCF,还不了解。所以就进行了研究,这样既有实践也能增加理论,二者结合,使用起来更胜一筹。 小编先从一些基本的概念开始,从基础一点点开始研究。 【WCF简介】 WCF(Windows Communication Foundation)是由微软开发的一
首先弄清楚困扰我很久的一个问题 为什么useState不能再条件和循环中使用?在查询了很多博客后最终在这篇博客中找到了答案https://juejin.cn/post/6844903704437456909#:~:text=%E9%87%8D%E7%82%B9%E6%9D%A5%E4%BA%86%EF%BC%9A%E5%B0%B1%E6%98%AF%E5%9B%A0%E4%B8%BA%E6%98%AF%E4%BB%A5%E8%BF%99%E7%A7%8D%E6%96%B9%E5%BC%8F%E8%BF_react hooks 为什么不能在条件里面定义usestate
Android 在 4G 下访问 IPV6 慢的解决方案_android ipv6慢 tcp