Replace values of an Array from other Arrays in PHP

2

I need to perform a array that stores values according to a comparison of arrays. Let me explain:

I have an ArrayA

ArrayA = [1,1,0,2,0]//1 = Activo, 0= neutro, 2=desactivado

and other Arrays that can be several. For example:

ArrayB = [1,1,0,2,1]
ArrayC = [1,2,1,0,1]
ArrayD = [1,1,2,1,1]
Array...n

These should be compared one after another starting with the ArrayA y ArrayB this generates a Nuevo Array and this should be compared with ArrayC and so on until you generate a Nuevo Array Final .

The comparison is as follows:

  • If the ArrayA index is 1, the final Array is 1.
  • If the ArrayA index is 2, the final Array is 2.
  • If the ArrayA index is 0 and in some Array B, C, D, N ... is 2, the final Array is 2.
  • If the ArrayA index is 0 and in all Array B, C, D, N ... is 1, the final Array is 1.
  • The ArrayFinal with the Arrays A, B, C and D above would be like this%% of%

    My code:

                    $data_user_valor=[1,1,0,2,0,1];
                    $data_user_perfiles=['perfil1','perfil2']; //en este caso solo 2
                    $data_final=array();
    
                    $y=0;
                    foreach ($data_user_perfiles as $user_perfiles)
                    {
        //Mediante una query con el valor de $user_perfiles asigno valores al array data_perfiles_valor (query extensa por eso no la incluyo).
    
    //Debe ser asi para obtener los valores de cada $user_perfiles
    
        //$data_perfiles_valor cambiara una vez que termine el proceso para el siguiente indice de $user_perfiles.
    
                        $data_perfiles_valor=[1,1,0,2];
    
        //Aquí estoy tratando de asignar y comparar los valores al Array Final
                        while($y<=4)
                        {
                            if($data_user_valor[$y][valor] == 1 )
                            {
                                array_push($data_final,1);
                            }
                            elseif ($data_user_valor[$y][valor] == 2 ) {
                                array_push($data_final,2);
                            }
                            elseif ($data_user_valor[$y][valor] == 0 && $data_perfiles_valor[$y][valor] == 1) {
                                array_push($data_final,1);
                            }
                            elseif ($data_user_valor[$y][valor] == 0 && $data_perfiles_valor[$y][valor] == 2) {
                                array_push($data_final,2);
                            }
                            else {
                                array_push($data_privileges,0);
                            }
                            $y++;
                    }
    
        
    asked by sebamim 20.06.2018 в 00:05
    source

    1 answer

    2

    The arrays are of a single dimension, so you do not need the second index valor . Neither do you need the condition to check if the value is 0 because if it were not, it would enter the first two if. Then it would be like this:

    $data_user_valor=[1,1,0,2,0,1];
                $data_user_perfiles=['perfil1','perfil2']; //en este caso solo 2
                $data_final=array();
    
    
                foreach ($data_user_perfiles as $user_perfiles)
                {
                     $y=0;
    //Mediante una query con el valor de $user_perfiles asigno valores al array data_perfiles_valor (query extensa por eso no la incluyo).
    
    //Debe ser asi para obtener los valores de cada $user_perfiles
    
    //$data_perfiles_valor cambiara una vez que termine el proceso para el siguiente indice de $user_perfiles.
    
                    $data_perfiles_valor=[1,1,0,2,1];
    
    //Aquí estoy tratando de asignar y comparar los valores al Array Final
                    while($y<=4)
                    {
                        if($data_user_valor[$y] == 1 )
                        {
                            array_push($data_final,1);
                        }
                        elseif ($data_user_valor[$y] == 2 ) {
                            array_push($data_final,2);
                        }
                        elseif ($data_perfiles_valor[$y] == 1) {
                            array_push($data_final,1);
                        }
                        elseif ($data_perfiles_valor[$y][valor] == 2) {
                            array_push($data_final,2);
                        }
                        else {
                            array_push($data_privileges,0);
                        }
                        $y++;
                }
    
        
    answered by 20.06.2018 / 00:13
    source