1
I am developing in Laravel 5.5 and Php 7.1.9 and came across the following problem:
I have the following Checkboxes screen and when marking any of the fields, the arraydiff of Laravel insists on returning the value of the incorrect difference, ie if I check any of the image checkbox it returns 1 => 2 As difference see the image.
Return using the Laravel Arraydif function

Code snippet generates Checkbox
{{-- percorrendo a tabela para exibir os checks--}}
@foreach($users as $keys => $dados_users)
{{-- se o resto da divisão for par será exibido na coluna A --}}
@if(!($keys % 2))
<tr class="">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="">
<p><input type="checkbox" class='chk' name="user_id[]" id="user_id" value="{{ $dados_users->id }}"> {{ $dados_users->name }}</p>
<p><input type="hidden" class='chk' name="user_id_desmarcados[]" id="user_id_desmarcados" checked value="{{ $dados_users->id }} "></p>
</td>
{{-- se não será exibido na coluna B --}}
@else
<td></td>
<td class="">
<p><input type="checkbox" class='chk' name="user_id[]" id="user_id" value="{{ $dados_users->id }}"> {{ $dados_users->name }}</p>
<p><input type="hidden" class='chk' name="user_id_desmarcados[]" id="user_id_desmarcados" checked value="{{ $dados_users->id }} "></p>
</td>
</tr>
@endif
{{-- finalizando o foreach --}}
@endforeach
Controller Code with Arraydiff (Laravel)
public function store(PerfisuserRequests $request)
{
// recebendo todos os dados do formulário
$dataForm = $request->all();
// repassando o valor do Id
$id_perfis = $dataForm['perfis_id'];
/*************************** Verificando os dados que foram Marcados na Inclusão ****************/
/***********************************************************************************************/
// repassando os dados para a variavel collection para verificar com Array Diff
$collection = collect($dataForm['user_id_desmarcados']);
// repassando os dados para a variavel collection para verificar com Array Diff
$collection2 = collect($dataForm['user_id']);
// realizando a verificação atráves do Array Diff
$diff = $collection->diffKeys($collection2);
// aqui será retornado a diferenca entre os Arrays
$diferenca = $diff->all();
dd($diferenca);
For Comparison Effect (after all it wasn’t working the way I wanted), I decided to use the direct php function to call the array_diff and to my surprise the return was favorable, IE, I got the return I needed see the examples.
Return print with Check 1 marked

Screen Print with Check 2 Marked

Excerpt from Array_diff Code
$teste = array_diff($dataForm['user_id_desmarcados'], $dataForm['user_id']);
dd($teste);
So I ask:
That would be a bug in the diff array of Laravel 5.5 or am I doing something wrong?
Is there a problem not using the native function of array diff in the Laravel?

You wanted the difference and extract the values, you’re confused. the function to configure is
diffin the case!– novic
yes! needed the difference! what I wanted to show is that the Laravel diff array_is not working properly! the diff was being used
– Diego Lela
You didn’t use it right and the
array_diffis not Laravel is PHP! use$collection->diffthe one you use... even does the same thing using diff arra_f!– novic
I think q Voce did not understand the code... yes I know q the array_diff is php .. but Laravel has its own method.. the first time I used Collection...
– Diego Lela
I did, and Laravel has a class
Collectionto work with this, I know all this, but, there is no bug, what may be happening is a mess of yours, something I would like you to say could rephrase the question giving example of how you want the result and how it is not working, this is very confusing if you can, the example is minimal giving to understand, the way you are not using$collection->diffif you’re using$collection->diffKeysand that’s what I’m seeing in your question– novic