Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在for循环中排列数组_Php_Arrays_Sorting_Object - Fatal编程技术网

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;
    }
}