Tengo una matriz de PHP que me gustaría duplicar pero solo copio elementos de la matriz cuyas claves aparecen en otra matriz.PHP array ¿copiar ciertas teclas, funciones integradas? ¿Desempeño anidado del bucle?
Éstos son mis matrices:
$data[123] = 'aaa';
$data[423] = 'bbb';
$data[543] = 'ccc';
$data[231] = 'ddd';
$data[642] = 'eee';
$data[643] = 'fff';
$data[712] = 'ggg';
$data[777] = 'hhh';
$keys_to_copy[] = '123';
$keys_to_copy[] = '231';
$keys_to_copy[] = '643';
$keys_to_copy[] = '712';
$keys_to_copy[] = '777';
$copied_data[123] = 'aaa';
$copied_data[231] = 'ddd';
$copied_data[643] = 'fff';
$copied_data[712] = 'ggg';
$copied_data[777] = 'hhh';
acabo de poder recorrer la matriz de datos de esta manera:
foreach ($data as $key => $value) {
if (in_array($key, $keys_to_copy)) {
$copied_data[$key] = $value;
}
}
Pero esto va a ocurrir dentro de un bucle que está recuperando datos de resultado de MySQL conjunto. Entonces sería un bucle anidado dentro de un bucle de datos MySQL. Normalmente intento evitar los bucles anidados a menos que no haya forma de utilizar las funciones de matriz incorporadas de PHP para obtener el resultado que estoy buscando. Pero también estoy cansado de tener un bucle anidado dentro de un bucle de datos MySQL, no quiero mantener MySQL dando vueltas.
Probablemente estoy preocupado innecesariamente por el rendimiento del ciclo anidado, ya que nunca lo haré por más de un par de cientos de filas de datos y tal vez 10 claves.
Pero me gustaría saber si hay una forma de hacerlo con las funciones integradas de PHP.
Eché un vistazo a array_intesect_key()
pero eso no acaba de hacer, porque mi matriz $keys_to_copy
tiene mis claves deseadas como valores de matriz en lugar de claves.
¿Alguien tiene alguna idea?
Saludos, B
¿Por qué no utiliza '' keys_to_copy' como el bucle principal? – Yoshi