Как я могу отфильтровать arrayTwo на основе значений в arrayOne, используя PHP? - PullRequest
0 голосов
/ 08 января 2020

Извините за неправильную терминологию. Я очень воин на выходных, когда дело доходит до программирования, но я стараюсь стать лучше.

У меня есть два индексированных массива с ассоциативными массивами в качестве значений. ArrayOne имеет значение для [uid_apps], которое я хочу использовать в качестве фильтра для ArrayTwo , чтобы я мог создать ArrayThree . Массив thrid будет включать только элементы массива из ArrayTwo , которые соответствуют значению [uid_apps] в ArrayOne .

Я посмотрел ar array_combine () и array_intersect (), но я не увидел четкого пути к успеху. Я также возился с array_filter (), но не смог заставить его работать.

Ниже приведены примеры arrayOne, arrayTwo и требуемого массива Three. Любая помощь, которую вы можете предложить, очень ценится.

ArrayOne

        [0] => Array
            (
                [uid_appMembership] => 3
                [uid_apps] => 1
                [uid_main] => 3
                [privileges] => 555
            )

        [1] => Array
            (
                [uid_appMembership] => 4
                [uid_apps] => 3
                [uid_main] => 3
                [privileges] => 555
            )

ArrayTwo

        [0] => Array
            (
                [uid_apps] => 1
                [name_apps] => GHS Walk Through Evaluation
                [site_apps] => ghs_001
                [team_apps] => ghs_admin
                [admin_uid] => 2
                [dir_apps] => ghs_walk-through-evaluation
            )

        [1] => Array
            (
                [uid_apps] => 2
                [name_apps] => CTE Work Based Learning Solution
                [site_apps] => do_000
                [team_apps] => do_cte
                [admin_uid] => 3
                [dir_apps] => do_cte-wbl
            )

        [2] => Array
            (
                [uid_apps] => 3
                [name_apps] => GHS Parking Permit Solution 
                [site_apps] => ghs_001
                [team_apps] => ghs_parking
                [admin_uid] => 3
                [dir_apps] => ghs_parking-permits
            )

        [3] => Array
            (
                [uid_apps] => 4
                [name_apps] => GHS F-List
                [site_apps] => ghs_001
                [team_apps] => ghs_counseling
                [admin_uid] => 3
                [dir_apps] => ghs_flist
            )

Желаемый ArrayThree Я бы хотел использовать arrayOne и arrayTwo для создания этого массива.

        [0] => Array
            (
                [uid_apps] => 1
                [name_apps] => GHS Walk Through Evaluation
                [site_apps] => ghs_001
                [team_apps] => ghs_admin
                [admin_uid] => 2
                [dir_apps] => ghs_walk-through-evaluation
            )
        [1] => Array
            (
                [uid_apps] => 4
                [name_apps] => GHS F-List
                [site_apps] => ghs_001
                [team_apps] => ghs_counseling
                [admin_uid] => 3
                [dir_apps] => ghs_flist
            )

Ответы [ 2 ]

1 голос
/ 08 января 2020

l oop через массив и проверьте, доступно ли значение uid_apps в другом массиве или нет, если оно доступно, чем добавить его в третий array.check, используя массив.

    $arr1 =  array(
            array(   
                'uid_appMembership' => 3,
                'uid_apps'          => 1,
                'uid_main'          => 3,
                'privileges'        => 555
            ),
            array(
                'uid_appMembership' => 4,
                'uid_apps'          => 3,
                'uid_main'          => 3,
                'privileges'        => 555
            )
        );

$arr2 = array(
            array(
                'uid_apps' => 1,
                'name_apps' => 'GHS Walk Through Evaluation',
                'site_apps' => 'ghs_001',
                'team_apps' => 'ghs_admin',
                'admin_uid' => 2,
                'dir_apps' => 'ghs_walk-through-evaluation'
            ),array(
                'uid_apps' => 2,
                'name_apps' => 'CTE Work Based Learning Solution',
                'site_apps' => 'do_000',
                'team_apps' => 'do_cte',
                'admin_uid' => 3,
                'dir_apps' => 'do_cte-wbl'
            ),array(
                'uid_apps' => 3,
                'name_apps' => 'GHS Parking Permit Solution' ,
                'site_apps' => 'ghs_001',
                'team_apps' => 'ghs_parking',
                'admin_uid' => 3,
                'dir_apps' => 'ghs_parking-permits'
            ),array(
                'uid_apps' => 4,
                'name_apps' => 'GHS F-List',
                'site_apps' => 'ghs_001',
                'team_apps' => 'ghs_counseling',
                'admin_uid' => 3,
                'dir_apps' => 'ghs_flist'
            )
        );
    $arr3 = array();
    foreach ($arr2 as $key => $value) {
        $res = chk_val($arr1,$value['uid_apps']);
        if($res == true){
            array_push($arr3,$arr2[$key]); 
        }
    }

    function chk_val($arr,$val){
        foreach ($arr as $key => $value) {
            if(in_array($val,$value)){
               return true;
            }else{
                return false;
            }

        }
    }

Рабочий пример: http://phpfiddle.org/main/code/sdri-fbpk

0 голосов
/ 08 января 2020

вот как можно получить нужный массив

$dataa = array();
foreach ($names as $key => $name) {
   foreach($ips as $key2=>$ip){
    if($name['uid_apps'] == $ip['uid_apps']){
        $dataa[] = $name;
    }
  }       
}
print_r($dataa);
...