这是我要拆分的示例数组:
(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;
});
答案 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个不同的数组进行处理。
让我知道这是否对您有用,否则,我将尝试根据您的要求更新答案。