Matriz Multidimensional para String

Eu estou tentando converter uma matriz multidimensional em uma seqüência de caracteres com um formato específico.

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);

Deve saída:blue~red~green&one~three~twenty ... e assim por diante, para mais sub-matrizes.

Deixe-me apenas dizer que não consegui produzir nenhum código que esteja remotamente próximo dos resultados desejados. Depois de duas horas, isso é praticamente o melhor que posso conseguir. Eu não sei porque os implodes estão agindo de forma diferente do que eles costumam fazer para seqüências de caracteres ou talvez eu não estou apenas olhando para este direito. Você é capaz de usar implodir para valores de matrizes?

questionAnswers(7)

yourAnswerToTheQuestion