php数组堆栈排序
Posted
技术标签:
【中文标题】php数组堆栈排序【英文标题】:php array stack ordering 【发布时间】:2011-07-01 00:01:11 【问题描述】:我正在尝试在 php 中对这个数组进行排序:
Array
(
[Levi Self] => Array
(
[0] => Portraits
[1] => Abstract
)
[Portraits] => Array
(
[0] => Megan
)
[Abstract] => Array
(
[0] => Locks
)
)
看起来像这样:
Array
(
[Levi Self] => Array
(
[Portraits] => Array
(
[0] => Megan
)
[Abstract] => Array
(
[0] => Locks
)
)
)
这基本上删除了重复的项目“Portraits”和“Abstract”,因为它们已经是数组开始的键,以及第一个键“Levi Self”下的项目。有没有办法做到这一点?谢谢,李维斯
【问题讨论】:
数据从何而来?如果可能的话,似乎更改编译比修正问题更有意义。也似乎是一个 SQL 结果,虽然可能是错误的? 数据来自 SQL 结果,您可以在此处看到(不同的问题)link 介意您发布产生此结果的 SQL 吗? @Ibrahim:查询:$query = mysql_query( "SELECT * FROM
table` WHERE uid
='1' ORDER BY id
DESC");` 并将数组格式化为上述数组:foreach ($list as $key => $arr) $result[ $arr['parent'] ] [] = $arr['title'];
什么时候不让父字段成为父行的id?这样你就可以通过SQL实现你想要的。
【参考方案1】:
$priKey = "Levi Self";
$arr = array(
"Levi Self" => array("Portraits","Abstract"),
"Portraits" => array("Megan"),
"Abstract" => array("Locks")
);
function rearrangeData($primaryKey,$myArr)
foreach($myArr[$primaryKey] as $key => $value)
$myArr[$primaryKey][$value] = $myArr[$value];
unset($myArr[$primaryKey][$key]);
unset($myArr[$value]);
return $myArr;
$arr2 = rearrangeData($priKey, $arr);
print_r($arr); //what you started with
print_r($arr2); //what you want
【讨论】:
我认为这种方法的问题在于数据是动态的。而且您一次可能有多个 $priKey...以上是关于php数组堆栈排序的主要内容,如果未能解决你的问题,请参考以下文章