Php 根据数组的特定字段将给定数组拆分为新数组
我有这样的阵列Php 根据数组的特定字段将给定数组拆分为新数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这样的阵列 $arrr = [ 95 => ['title' => 'CONTACT US', 'break' => '1', 'id' => 95], 100 => ['title' => 'CUSTOMER SERVICE', 'break' => '1', 'id' => 100], 105 => ['title' => 'SHOPPING TOOLS', 'break' => '0', 'id
$arrr = [
95 => ['title' => 'CONTACT US', 'break' => '1', 'id' => 95],
100 => ['title' => 'CUSTOMER SERVICE', 'break' => '1', 'id' => 100],
105 => ['title' => 'SHOPPING TOOLS', 'break' => '0', 'id' => 105],
126 => ['title' => 'COMPANY INFO1', 'break' => '0', 'id' => 126],
108 => ['title' => 'COMPANY INFO', 'break' => '1', 'id' => 108],
111 => ['title' => 'CONNECT WITH US', 'break' => '0', 'id' => 111],
114 => ['title' => 'OUR OTHER SITES', 'break' => '1', 'id' => 114],
];
现在我想要这样的数组
$arrr = [
0 => ['title' => 'CONTACT US', 'break' => '1', 'id' => 95],
1 => ['title' => 'CUSTOMER SERVICE', 'break' => '1', 'id' => 100],
2 => [
0 => ['title' => 'SHOPPING TOOLS', 'break' => '0', 'id' => 105],
1 => ['title' => 'COMPANY INFO1', 'break' => '0', 'id' => 126],
2 => ['title' => 'COMPANY INFO', 'break' => '1', 'id' => 108],
],
3 => [
0 => ['title' => 'CONNECT WITH US', 'break' => '0', 'id' => 111],
1 => ['title' => 'OUR OTHER SITES', 'break' => '1', 'id' => 114]
]
];
或
给定具有字段“break”的数组。根据此字段“break”,必须按结果数组所示拆分数组
请分享解决方案。提前感谢。给你第一个数组的答案
<?php
$arrr = array(
95 => array('title' => 'CONTACT US', 'break' => '1', 'id' => 95),
100 => array('title' => 'CUSTOMER SERVICE', 'break' => '1', 'id' => 100),
105 => array('title' => 'SHOPPING TOOLS', 'break' => '0', 'id' => 105),
126 => array('title' => 'COMPANY INFO1', 'break' => '0', 'id' => 126),
108 => array('title' => 'COMPANY INFO', 'break' => '1', 'id' => 108),
111 => array('title' => 'CONNECT WITH US', 'break' => '0', 'id' => 111),
114 => array('title' => 'OUR OTHER SITES', 'break' => '1', 'id' => 114),
);
$new_array = array();$i=0;
foreach($arrr as $row){
if($row['break']==1){ if(!isset($new_array[$i]))$new_array[$i] = $row;else $new_array[$i][]=$row;$i++;}
else $new_array[$i][] = $row;
}
echo "<pre>";print_r($new_array);
?>
人们怎么可能知道
126
和108
应该属于105
,而100
不应该属于95
?没有任何东西可以指示数组应该如何分组。我猜你是想在break
上拆分,但在105中你似乎同时拥有0
和1
。请更新您的问题,以清楚地说明应如何拆分数组,以及如何确定。到目前为止,您尝试了什么,我还看到break=0和1的组合,这不是很有趣吗?具有断点1的元素将是另一个数组中的单独元素,具有断点0的数组将是该单独数组中具有下一个元素的另一个数组,如果下一个元素再次具有break 0,那么它应该位于该单独的数组中,直到下一个元素具有break=1。我已经尝试了这个解决方案$结果=[]$i=0;foreach($arrras$key=>$value){$result[$i][]=$value;if($value['break']==1){$i++;}}}echo'//打印(结果);
<?php
$arrr = array(
95 => array('title' => 'CONTACT US', 'break' => '1', 'id' => 95),
100 => array('title' => 'CUSTOMER SERVICE', 'break' => '1', 'id' => 100),
105 => array('title' => 'SHOPPING TOOLS', 'break' => '0', 'id' => 105),
126 => array('title' => 'COMPANY INFO1', 'break' => '0', 'id' => 126),
108 => array('title' => 'COMPANY INFO', 'break' => '1', 'id' => 108),
111 => array('title' => 'CONNECT WITH US', 'break' => '0', 'id' => 111),
114 => array('title' => 'OUR OTHER SITES', 'break' => '1', 'id' => 114),
);
$new_array = array();$i=0;
foreach($arrr as $row){
if($row['break']==1){ if(!isset($new_array[$i]))$new_array[$i] = $row;else $new_array[$i][]=$row;$i++;}
else $new_array[$i][] = $row;
}
echo "<pre>";print_r($new_array);
?>
Array(
[0] => Array([title] => CONTACT US, [break] => 1, [id] => 95),
[1] => Array([title] => CUSTOMER SERVICE, [break] => 1, [id] => 100),
[2] => Array(
[0] => Array([title] => SHOPPING TOOLS, [break] => 0, [id] => 105),
[1] => Array([title] => COMPANY INFO1, [break] => 0, [id] => 126),
[2] => Array([title] => COMPANY INFO, [break] => 1, [id] => 108),
)
[3] => Array(
[0] => Array([title] => CONNECT WITH US, [break] => 0, [id] => 111)
[1] => Array([title] => OUR OTHER SITES, [break] => 1, [id] => 114)
)
)