Array multidimensional a cadena

Estoy tratando de convertir una matriz multidimensional en una cadena con un formato particular.

function convert_multi_array($array) {
    foreach($array as $value) {
        if(count($value) > 1) {
            $array = implode("~", $value);
        }
        $array = implode("&", $value);
    }
    print_r($array);
}
$arr = array(array("blue", "red", "green"), array("one", "three", "twenty"));
convert_multi_array($arr);

Debe salir:blue~red~green&one~three~twenty ... y así sucesivamente para más sub-matrices.

Permítanme decir que no he podido producir ningún código que esté cerca de los resultados que deseo. Después de dos horas, esto es lo mejor que puedo conseguir. No sé por qué los implodes actúan de manera diferente de lo que suelen hacer con las cuerdas o tal vez simplemente no estoy viendo esto correctamente. ¿Eres capaz de usar implode para valores de arrays?

Respuestas a la pregunta(7)

Su respuesta a la pregunta