На PHP 5.3 обратил внимание на такую особенность: переменные, упомянутые в use(), если являлись «ссылками», то перестают ими быть.
Например
$contracts = ...;
$services = ...;
foreach ($contracts as &$contract) {
$contract['xxx'] = 'yyy'; // тут меняется $contracts
$contractServices = array_filter($services, function($v) use ($contract){
return $v['id'] == $contract['contractId'];
});
$contract['mmm'] = 'nnn'; // а здесь $contract уже живёт своей жизнью, $contracts не меняется
}
Проблему решает амперсенд — use (&$contract), но, имхо, такое поведение оказалось неочевидным.
document.createDocumentFragment()
добавляйте в цикле в него то что необходимо, и потом уже делайте 1 раз append этого фрагмента куда надо на странице, сэкономите на перерисовке DOM'а
Например
Проблему решает амперсенд — use (&$contract), но, имхо, такое поведение оказалось неочевидным.