将PHP数组拆分为两个单独的数组

问题描述

我有这个数组,下面有3个元素。我想实现的是这样:

我想将这些元素分成2个数组-一个数组应仅保留pay_flag设置为0的条目,而另一个pay_flag设置为1的条目。

我该怎么做?我正在做foreach,但我不知道在满足条件时如何将它们分开。像这样:

foreach ($mainArray as $array) {
    if ($mainArray['pay_flag'] != 0) {
        // create a separate array with entries that have 'pay_flag' 1;
    } else {
        // create a separate array with entries that have 'pay_flag' 0;
    }
}


($mainArray) [3 elements]
0:
id: (string) "1"
user_id: (null) 1
description: (null) NULL
pay_flag: (integer) 0 
reported_at: (null) NULL
created_at: (string) "2020-09-06 17:00:00"

1: 
id: (string) "1"
user_id: (null) 1
description: (null) NULL
pay_flag: (integer) 0 
reported_at: (null) NULL
created_at: (string) "2020-09-06 17:00:00"

2: 
id: (string) "1"
user_id: (null) 1
description: (null) NULL
pay_flag: (integer) 1 
reported_at: (null) NULL
created_at: (string) "2020-09-06 17:00:00"

解决方法

<?php

$items = 
[
    [
        'name' => 'Fred','flag' => 0
    ],[
        'name' => 'Wilma','flag' => 1
    ],[
        'name' => 'Betty','flag' => 1
    ]
];

foreach($items as $item)
{
    $grouped[$item['flag']][] = $item;
}

var_export($grouped);

输出:

array (
  0 => 
  array (
    0 => 
    array (
      'name' => 'Fred','flag' => 0,),1 => 
  array (
    0 => 
    array (
      'name' => 'Wilma','flag' => 1,1 => 
    array (
      'name' => 'Betty',)

然后,您可以通过$grouped[0]访问零,并通过$grouped[1]访问零(只要您同时具有两种标志)。

,

这是另一种解决方案,根据您的问题,请尝试使用运算符[] 将项目添加到数组:

<?php

$mainArray = 
[
    [
        'lorem' => 'aaaa','pay_flag' => 0
    ],[
        'lorem' => 'bbbb','pay_flag' => 1
    ],[
        'lorem' => 'cccc','pay_flag' => 1
    ]
];

$arr1 = array();
$arr0 = array();

foreach ($mainArray as $array) {
    if ($array['pay_flag'] !== 0) {
        // create a separate array with entries that have 'pay_flag' 1;
        $arr1[] = $array;
    } else {
        // create a separate array with entries that have 'pay_flag' 0;
        $arr0[] = $array;
    }
}

print_r($arr1);  //array which contains entries that have 'pay_flag' 1
print_r($arr0);  //array which contains entries that have 'pay_flag' 0
,

您可以使用array_filter进行此操作,例如:

$withoutPayFlag = array_filter($mainArray,function($value)) {
        return $value['pay_flag'] === 0;
    }
);

函数回调可确保仅返回数组中将pay_flag设置为0的项目。然后您也可以对pay_flag 1进行此操作,然后将结果添加到其他数组中,例如$withPayFlag

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...