3 回答

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果您嘗試根據(jù)項(xiàng)目的類型交錯(cuò)項(xiàng)目,您可以嘗試:
$collection = collect($array)->groupBy(function ($value) {
return gettype($value);
});
$interleaved = $collection->first()->zip($collection->last())->flatten()->filter();
這會(huì):
按類型對(duì)項(xiàng)目進(jìn)行分組
取出第一組并將其與最后一組一起壓縮(假設(shè)您正好有 2 組)
然后它會(huì)展平結(jié)果并過(guò)濾掉空值
注意:您可能需要添加檢查以確定字符串組是第一個(gè)還是最后一個(gè)并進(jìn)行相應(yīng)調(diào)整。

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
它很臟,但你可以嘗試:
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貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您正在尋找一種將集合內(nèi)容隨機(jī)排列的方法,請(qǐng)嘗試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 關(guān)注
- 218 瀏覽
添加回答
舉報(bào)