3 回答

TA貢獻1936條經驗 獲得超7個贊
如果您嘗試根據項目的類型交錯項目,您可以嘗試:
$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 關注
- 190 瀏覽
添加回答
舉報