尝试使用PHP排序数组数组..拉出头发?
发布时间:2020-12-13 16:13:21 所属栏目:PHP教程 来源:网络整理
导读:我正在使用FLOT和php做一些统计图的快速原型,我实际上是在一起黑客攻击以展示一些东西. 然而,我面临的问题是我的坚果…… 所以我有一些数据,我从数据库中抓取,然后为了让它很容易为我的Flot hack工作,我把它转换成如下所示: [[0,1],[2,[4,[5,[9,[10,[ 12,[1
我正在使用FLOT和php做一些统计图的快速原型,我实际上是在一起黑客攻击以展示一些东西.
然而,我面临的问题是我的坚果…… 所以我有一些数据,我从数据库中抓取,然后为了让它很容易为我的Flot hack工作,我把它转换成如下所示: [[0,1],[2,[4,[5,[9,[10,[ 12,[13,1]] 现在最终计划是拥有多组数据,然后生成堆积图表.所以我需要做的是理清上面有重复的地方,如上所述: [….. [4,1] …..] 需要看起来像这样: [….. [4,2,1] …..] 下面是我尝试对它进行排序的尝试(这是尝试前进的尝试的最新迭代,向后改变内在价值和外部价值)…… $count = count($array); $sorted = false; while (!$sorted) { $doneSomething = 0; for($i = $count - 1; $i > 0; $i--) { $tempArr = $array[$i]; foreach($array as $key => $a) { if($key == $i) { echo "breaking"; continue; } $result = array_diff($tempArr,$a); if(count($result) == 0 ) { $array[$i][1]++; if(count($array[$i]) == 3) $array[$i][2]++; else $array[$i][] = 1; $doneSomething++; } if($doneSomething > 0) break; } } if($doneSomething == 0) $sorted=true; } 结果是这样的: Array ( [0] => Array ( [0] => 0 [1] => 1 ) [1] => Array ( [0] => 2 [1] => 4 [2] => 3 ) [2] => Array ( [0] => 4 [1] => 2 [2] => 1 ) [3] => Array ( [0] => 4 [1] => 5 [2] => 4 ) [4] => Array ( [0] => 5 [1] => 1 ) [5] => Array ( [0] => 9 [1] => 2 [2] => 1 ) [6] => Array ( [0] => 9 [1] => 3 [2] => 2 ) [7] => Array ( [0] => 10 [1] => 1 ) [8] => Array ( [0] => 12 [1] => 1 ) [9] => Array ( [0] => 13 [1] => 1 ) ) 你可以看到不是我想要的结果: [[0,[12,1]] 如果有人可以帮我解决这个问题,我们将非常感激. 谢谢 瓦杰 编辑:我应该注意,如果只有2个重复,它不是那么糟糕我可以工作,但它有3或更多时,即: [… [4,1] …] 需要看起来像: […. [4,3,2],4,3] …] 解决方法
试试吧.这似乎在这里工作正常:
<?php $array = array( array(0,1),array(2,array(4,array(5,array(9,array(10,array(12,array(13,1) ); $last_elem = null; foreach($array as &$elem){ if($last_elem){ if($elem[0] == $last_elem[0]){ $elem[2] = (isset($last_elem[2]) ? $last_elem[2] + 1 : 1); $elem[1] = $last_elem[1] + 1; } } $last_elem = &$elem; } var_dump($array); ?> 这在这里工作得很好,我用这个数组测试了它: 输出是: array 0 => array 0 => int 0 1 => int 1 1 => array 0 => int 2 1 => int 1 2 => array 0 => int 4 1 => int 1 3 => array 0 => int 4 1 => int 2 2 => int 1 4 => array 0 => int 4 1 => int 3 2 => int 2 5 => array 0 => int 4 1 => int 4 2 => int 3 6 => array 0 => int 5 1 => int 1 7 => array 0 => int 9 1 => int 1 8 => array 0 => int 9 1 => int 2 2 => int 1 9 => array 0 => int 9 1 => int 3 2 => int 2 10 => array 0 => int 10 1 => int 1 11 => array 0 => int 12 1 => int 1 12 => & array 0 => int 13 1 => int 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |