Php 在for循环中排列数组
我有一个如下所示的数组:Php 在for循环中排列数组,php,arrays,sorting,object,Php,Arrays,Sorting,Object,我有一个如下所示的数组: array( 0 => object //ticket, 1 => object //user, 2 => object //employee, 3 => object //ticket, 4 => object //user 5 => object //ticket, 6 => object //employee ); 由此可以看出,ticket对象始终存在,而empl
array(
0 => object //ticket,
1 => object //user,
2 => object //employee,
3 => object //ticket,
4 => object //user
5 => object //ticket,
6 => object //employee
);
由此可以看出,ticket对象始终存在,而employee和user对象都是可选的。我想做的是循环浏览它们并像这样组织它们:
array(
[0] => array(
[0] => object //ticket,
[1] => object //user,
[2] => object //employee,
)
)
我遇到的问题是,由于用户和雇员是可选的,我不确定如何根据上述模型正确索引,因为偶尔我会点击一个没有雇员或用户的模型(如果没有,我希望该索引为空)。有什么想法吗
编辑:
例如:
for($i=0;$i
您可以使用instanceof检查当前数组元素是哪个类的实例,然后根据需要将其分组:)
范例
if( $array[0] instanceof ticket ) {
// do some magic in here
}
是的,我肯定是放屁了。很抱歉浪费了任何人的时间,以下是循环:
$lastTicketIndex = 0;
for ($i = 0; $i < count($result) - 1; $i++) {
if ($result[$i] instanceof Ticket) {
$newResult[$i][] = $result[$i];
$lastTicketIndex = $i;
continue;
} else {
$newResult[$lastTicketIndex][] = $result[$i];
}
}
$lastTicketIndex=0;
对于($i=0;$i
这与您自己的答案类似,但完成后不需要重新索引$newResult
$newIndex = -1;
$newResult = array();
foreach ($result as $object) {
if ($object instanceof Ticket) {
$newResult[] = array($object);
$newIndex++;
} else {
$newResult[$newIndex][] = $object;
}
}
但是,您最初的问题提到将子阵列的未使用元素设置为
null
。你的回答没有做到这一点,所以我也没有做到。你能举一个你尝试过的例子吗?您想要的代码的那个或一个理论(非工作)示例将有助于准确理解您想要做什么。代码>单词:)好的,一旦你点击另一个代码,你就停止填充当前数组并开始使用新的数组。对象根据其ID进行关联,对象本身是条令实体,并通过查询生成器连接进行检索。如果有什么方法可以自动做到这一点,我会更高兴。但不管出于什么原因,它都会将它们作为数组中的单独索引返回。为什么不让子数组关联起来,这样就不用担心将索引设置为null?是的,我正在这样做。我的问题是如何将它与最后一个票证索引合并在一起?完成后,您应该执行$newResult=array\u values($newResult)
以连续重新编号索引。
$newIndex = -1;
$newResult = array();
foreach ($result as $object) {
if ($object instanceof Ticket) {
$newResult[] = array($object);
$newIndex++;
} else {
$newResult[$newIndex][] = $object;
}
}