如何基于整数值将数组分为两个数组

时间:2018-10-15 07:08:16

标签: php arrays

这是我要拆分的示例数组:

(1428,217,1428)

如何将其分成2个数组?

(1428,1428)
(217)

我已经尝试过以下方法,但是只返回1428数组。

$counts = array_count_values($array);
$filtered = array_filter($array, function ($value) use ($counts) {
    return $counts[$value] > 1;

});

3 个答案:

答案 0 :(得分:0)

一种解决示例数据问题的方法是对数组进行排序,并使用array_shift获取数组的第一个元素并将其存储在数组中。

private void getPlaceInfo(double lat, double lon) throws IOException {
        List<Address> addresses = mGeocoder.getFromLocation(lat, lon, 1);
        if (addresses.get(0).getPostalCode() != null) {
            String ZIP = addresses.get(0).getPostalCode();
            Log.d("ZIP CODE",ZIP);
        }

        if (addresses.get(0).getLocality() != null) {
            String city = addresses.get(0).getLocality();
            Log.d("CITY",city);
        }

        if (addresses.get(0).getAdminArea() != null) {
            String state = addresses.get(0).getAdminArea();
            Log.d("STATE",state);
        }

        if (addresses.get(0).getCountryName() != null) {
            String country = addresses.get(0).getCountryName();
            Log.d("COUNTRY",country);
        }
    }

结果

$a = [1428,217,1428];
sort($a);
$b = [array_shift($a)];

print_r($a);
print_r($b);

答案 1 :(得分:0)

您可以尝试一下。

$array = array(1428,217,1428);
$array1 = array_slice($array, 0, 2);
$array2 = array_slice($array, 2, 3);
print_r($array1);
print_r($array2);

输出将是这样的:-

Array
(
    [0] => 1428
    [1] => 217
)
Array
(
    [0] => 1428
)

答案 2 :(得分:0)

在您的情况下,由于array_count_values返回一个以值作为键且其频率作为数组值的数组,因此它只会返回1428,因此 $ counts 将等于array('1428' => 2, '217' => 1); < / p>

如果我很好地理解了您的问题,则应该执行以下操作:

$array1 = [1428, 217, 1428];
$result = [];
foreach($array1 as $value){
  $result[$value][] = $value;  
}

这不会为每个不同的值创建一个数组,但会为$result中的每个唯一值创建一个新元素。 $result的最终值为array('1428' => [1428, 1428], '217' => [217])。可以很容易地将它们当作2个不同的数组进行处理。

让我知道这是否对您有用,否则,我将尝试根据您的要求更新答案。