У меня есть массив PHP, который я хотел бы дублировать, но только копировать элементы из массива, ключи которого отображаются в другом массиве.
Вот мои массивы:
$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';
Я мог бы просто пропустить массив данных следующим образом:
foreach ($data as $key => $value) {
if ( in_array($key, $keys_to_copy)) {
$copied_data[$key] = $value;
}
}
Но это произойдет внутри цикла, который извлекает данные из набора результатов MySQL. Таким образом, это будет цикл, вложенный в цикл данных MySQL. Я обычно стараюсь избегать вложенных циклов, если нет возможности использовать встроенные функции массива PHP для получения результата, который я ищу. Но я также устал от наличия вложенного цикла в цикле данных MySQL, я не хочу, чтобы MySQL зависал.
Я, вероятно, беспокоюсь о производительности вложенного цикла без необходимости, поскольку я никогда не буду делать этого более чем на пару сотен строк данных и, возможно, на 10 ключей.
Но я хотел бы знать, есть ли способ сделать это со встроенными функциями PHP.
Я посмотрел на array_intesect_key()
, но это не совсем так, потому что у моего массива $keys_to_copy
есть мои нужные ключи как значения массива, а не ключи.
У кого-нибудь есть идеи?
Приветствия, B