重新安排多维php数组

I need to re-arrange a php multidimensional array so that to 'match' corresponding values from different arrays;

this is my reproducible example

<?php 

    // my original array
    $myar= array(
                array('A'=>'xxx','B'=>1),
                array('A'=>'yyy','B'=>2),
                array('A'=>'xxx','B'=>3),
                array('A'=>'yyy','B'=>4)
                );

    print_r($myar);

   // my desired result, new array
    $myar_new= array(
                array('xxx'=>1,'yyy'=>2),
                array('xxx'=>3,'yyy'=>4)
                );

    print_r($myar_new);


    ?>

any help for that?

thanks

If I got your logic right then this function is what you need.

(Edited)

function strange_reformat($srcArray) {
    $newArray = [];
    $c = count($srcArray);
    $i = 0;
    $groupStart = null;
    $collect = [];
    while($i < $c) {
        $row = current($srcArray[$i]);
        if ($row == $groupStart) {
            $newArray[] = $collect;
            $collect = [];
        }
        $tmp = array_values($srcArray[$i]);
        $collect[] = [$tmp[0] => $tmp[1]]; 
        if ($groupStart === null) $groupStart = $row;
        $i++;
    }
    $newArray[] = $collect;

    return $newArray;
}

print_r(strange_reformat($myar));

yes, that's it...

but now I need to generalise it, please consider this case

$myar= array(
            array('A'=>'xxx','B'=>1),
            array('A'=>'yyy','B'=>2),
            array('A'=>'zzz','B'=>5),
            array('A'=>'xxx','B'=>3),
            array('A'=>'yyy','B'=>4),
            array('A'=>'zzz','B'=>6)
            );
function strange_reformat($srcArray) {
    $newArray = [];
    $c = count($srcArray);
    for ($i=0; $i<$c; $i+=3) {
        $first = array_values($srcArray[$i]);
        $second = array_values($srcArray[$i+1]);
        $third = array_values($srcArray[$i+2]);
        $newArray[] = [$first[0]=>$first[1], $second[0]=>$second[1], $third[0]=>$third[1]];
    }

    return $newArray;
}

print_r(strange_reformat($myar));