one email is required. and one checkbox should be checked in the first row. if the second email input is filled in the second row then there is also one checkbox should be checked and so on.
@for ($i = 0; $i < 4; $i++)
<input type="email" id="email" name="email[]">
<input type="checkbox" name="task[{{ $i }}][]" value="sign">
<input type="checkbox" name="task[{{ $i }}][]" value="initial">
<input type="checkbox" name="task[{{ $i }}][]" value="date">
<input type="checkbox" name="task[{{ $i }}][]" value="cc"
@endfor
this is the code in my controller its not catch the task field if it's null.
$validatedData = $request->validate([
'email.0' => 'required_without_all:email.*|email',
'email.1' => 'nullable|email',
'email.2' => 'nullable|email',
'email.3' => 'nullable|email',
'task.*' => 'required_if:email.*,filled',
]);

required_withinstead,required_ifwill check the value, which means your field will only be required when email is equal to'filled', which will never be the case since it's not a valid email. Also you will have to store the values under the same array i think, like :contact.*.emailandcontact.*.task'person.*.first_name' => 'required_with:person.*.last_name',see laravel.com/docs/9.x/validation#validating-nested-array-input