Я уверен, что здесь есть очевидное объяснение, но я получаю странно разные ответы при фильтрации коллекций. $c=Media::all()->collect();
// first set of commands
$filtered=Media::all()->filter(function($item,$k){
return in_array("mp4",$item->extensions->toArray();
})->count(); // 97
$cFiltered=$c->filter(function($item,$k){
return in_array("mp4",$item->extensions->toArray();
})->count(); // 96
Media::all()->count()==$c->count(); // true
$ct=Media::all()->count(); // 173
// Now - additional weirdness
// same commands but changed filtered variable name
$newFiltered=Media::all()->filter(function($item,$k){
return in_array("mp4",$item->extensions->toArray();
})->count(); // 100
$newCFiltered=$c->filter(function($item,$k){
return in_array("mp4",$item->extensions->toArray();
})->count(); // 83
Media::all()->count()==$c->count(); // true
Media::all()->count()==$ct; // true
< /code>
Они были выполнены обратно к спине, по сути, прохождение времени. Единственная разница между первым набором результатов и вторым набором заключается в том, что я изменил имена переменных. Я выполняю код в ремесленном раковине.
Подробнее здесь: https://stackoverflow.com/questions/796 ... ollections