Php 移除阵列中的父结构,同时保持子结构完整
我的数组如下所示:Php 移除阵列中的父结构,同时保持子结构完整,php,arrays,Php,Arrays,我的数组如下所示: array(2) { ["highpriority"]=> array(2) { [0]=> // 1st item array(2) { [0]=> string(14) "Do the laundry" [1]=> string(6) "Sunday" } [1]=> // 2nd item array(2) { [0]=>
array(2) {
["highpriority"]=>
array(2) {
[0]=> // 1st item
array(2) {
[0]=>
string(14) "Do the laundry"
[1]=>
string(6) "Sunday"
}
[1]=> // 2nd item
array(2) {
[0]=>
string(19) "Study for math exam"
[1]=>
string(6) "Monday"
}
}
["lowpriority"]=>
array(2) {
[0]=> // 3rd item
array(2) {
[0]=>
string(15) "Get car cleaned"
[1]=>
string(9) "Next week"
}
[1]=>
array(2) { // 4th item
[0]=>
string(33) "Buy The Amazing Spider-Man on DVD"
[1]=>
string(5) "Later"
}
}
}
我试图创建一个函数,通过将项目的编号作为输入来返回项目的字符串。例如,如果输入$number=3,我的函数readItem($number)将返回“GetCarCleanned”。有高优先级和低优先级节点,但会添加更多节点,如mediumpriority、toppriority等。。。我正在考虑删除数组中的父节点(高优先级和低优先级节点),我可以使用$array[$number]读取项目字符串,对吗
使用数组_shift(),只保留高优先级的子级。我怎样才能让每一位家长都接受?我在这里找到了一些代码,但它依赖于通过名称了解父项:。如果有帮助的话,我的数组中的数据将使用我前面问题中的nickb代码从CSV中读取:
我相信这个解决方案很简单,但是除了foreach循环和手动向新数组添加子数组之外,还有其他方法吗?谢谢你由于你的优先级有名字,要知道它们的正确顺序,唯一的方法就是在某处列举它们
// Assume the data array is named $tasks.
function readItem($number) {
$priorities = ['highpriority', 'lowpriority'];
$total = 0;
foreach($priorities as $priority) {
$thiscount = count($tasks[$priority]);
if($number <= $total + $thiscount) {
// The item is in this priority.
return $tasks[$priority][$number - $total - 1][0]
}
$total += $thiscount;
}
}
//假设数据数组名为$tasks。
函数readItem($number){
$priorities=[“高优先级”、“低优先级”];
$total=0;
foreach($priority作为$priority){
$thiscont=count($tasks[$priority]);
如果($number在那里:
<?php
$input = array(
'high' => array(
array('Do the laundry', 'Sunday'),
array('Study math', 'Monday')
),
'low' => array(
array('Get car cleaned', 'Next Week')
)
);
$output = array();
array_walk_recursive($input, function($item, $key) use (&$output) {
$index = count($output) - $key;
$output[$index][] = $item;
});
$readItem = function($index) use ($output) {
return $output[$index-1];
};
var_dump($readItem(3));
?>
这正是我想要的,谢谢!我接受了你的回答