Si los indices son distintos tienes un problema de enfoque en tu arquitectura, si trabajan en equipo deben sentarse a definir todo antes de continuar y ejecutar el requerimiento.
Si eres tu solo, pues dale duro a la plantación para que homologues esto.
Yo se que muchas veces tendemos a obviar y dejar de lado la planeación, pero la consecuencia es esta, que todo este disperso y nada homologado.
Tu alternativa es seguir con el for o foreach tal cual lo tienes, haciendo ajustes manuales cada que lo necesites, pero ya has visto que es poco eficiente, ni para el servidor ni para ti.
Edito: una alternativa que me viene a la mente que es mas sencillo que un for o fereach es usar array_values y array_combine
Código PHP:
Ver original<?php
$factura = (object
) array( 'id' => '123',
'cliente' => 'don benito'
);
'taco' => '123',
'mole' => 'don benito'
);
$indexList = ['id', 'cliente'];