3 回答
TA贡献1936条经验 获得超6个赞
如果您尝试根据项目的类型交错项目,您可以尝试:
$collection = collect($array)->groupBy(function ($value) {
return gettype($value);
});
$interleaved = $collection->first()->zip($collection->last())->flatten()->filter();
这会:
按类型对项目进行分组
取出第一组并将其与最后一组一起压缩(假设您正好有 2 组)
然后它会展平结果并过滤掉空值
注意:您可能需要添加检查以确定字符串组是第一个还是最后一个并进行相应调整。
TA贡献1757条经验 获得超8个赞
它很脏,但你可以尝试:
use Illuminate\Support\Arr;
$array = ["a", "b", "c", 1, 2];
//split strings and integers
$string = Arr::where($array, function ($value, $key) {
return is_string($value);
});
$integer = Arr::where($array, function ($value, $key) {
return is_int($value);
});
$integer = array_values($integer);
$combine = [];
foreach (array_values($string) as $key => $value) {
$combine[] = $value;
if(array_key_exists($key, $integer)){
$combine[] = $integer[$key];
unset($integer[$key]);
}
}
$combine = array_merge($combine, $integer);
//["a", 1, "b", 2, "c"]
TA贡献1851条经验 获得超5个赞
如果您正在寻找一种将集合内容随机排列的方法,请尝试shuffle()以下方法:
$arr = ["a", "b", "c", 1, 2, 3, 4, 5, 6];
$collection = collect($arr);
$shuffled = $collection->shuffle();
$mixed_array = $shuffled->all();
这将为您提供以下输出:
=> ["b",4,5"c",2,3,"a",1,6,]
- 3 回答
- 0 关注
- 100 浏览
添加回答
举报