La tua soluzione è molto valida

Ho provato a fare in modo diverso scambiando solo gli elementi nelle posizioni in cui dovrebbero stare i nuovi elementi ma è un pò disastroso perchè funziona solo in certe situazioni

Comunque se ti serve una soluzione ancora più semplice: eccola qui

Codice PHP:
function array_innerPad($input,$pos,$newElementArr)
{    
    
$first=array_slice($input0$pos);
    
$second=array_slice($input$pos);

    return 
array_merge($first,$newElementArr,$second);