检查子数组的值,在新数组中使用key作为新值 - PHP

I have an array, let call it $mainArray, which looks like this: -

Array
(
    [1] => Array
    (
    )

    [5] => Array
    (
        [0] => 10
        [1] => 15
        [2] => 20
        [3] => 25
    )

    [80] => Array
    (
        [0] => 20
        [1] => 40
        [2] => 50
        [3] => 60
    )

    [777] => Array
    (
        [0] => 100
        [1] => 200
        [2] => 300
        [3] => 400
    )

    [666] => Array
    (
        [0] => 1234
        [1] => 5678
        [2] => 20
        [3] => 9865
    )

    [555] => Array
    (
        [0] => 111
        [1] => 222
        [2] => 333
        [3] => 444
    )

)

What I want to do is create 2 new arrays: -

1) Where values are equal to the key names of $mainArray, but only those where the sub-array (if there is one) contains the value "20" somewhere in it. For example my new array (call it $arrayOne) will be [0] => 5, [1] => 80, [2] => 666.

2) Similar to above, but where there's either no sub-array or, if there is, it doesn't include "20" as a value. So that (call it $arrayTwo) would be [0] => 1, [1] => 777, [2] =>555.

I've tried loads of for each loops and even a little RecursiveIteratorIterator (whatever that is!) but can't seem to reference keys and values in the way that I need to. Any help would be much appreciated!

Will this do?:

<?php

    foreach( $mainArray as $mKey => &$mVal )
    {
        if( in_array( 20, $mVal ) )
        {
            $arrayOne[] = $mKey;
        }
        else
        {
            $arrayTwo[] = $mKey;
        }
    }

I trust you can create a function which would check if array contains 20 as it's value or not. Let's call this function has20.

You two new arrays would then be array_filter($mainArray, 'has20') and array_filter($mainArray, function ($x) {return !has20($x);})

You can do it like this:

$newArray = array();
foreach($mainArray as $key => $subArray) {
  if (in_array(20, $subArray)) {
    $newArray[] = $key;
  }
}