Я бы хотел заменить все числовые ключи в $aValues
текстовым эквивалентом, хранящимся в $aKeyNames
.Обновить все ключи массива, используя значение из другого массива
$aKeyNames = array(0 => 'foo', 1 => 'bar');
$aValues = array(0 => 'foo content', 1 => 'bar content');
Желаемый результат;
$aValues = array('foo' => 'foo content', 'bar' => 'bar content');
Для этого я написал следующий рабочий код;
foreach ($aValues as $iPos => $aValue) {
$aValues[ $aKeyNames[$iPos] ] = $aValue;
unset($aValues[$iPos]);
}
Я обеспокоен тем, что $aValues
очень большой. Есть ли более эффективный способ достичь этого?
Ваши решения, кажется, хорошо, так как вы хотите, чтобы заменить ключ на значение одного и того же ключа в другой массив. Вы можете использовать 'array_combine()', но вы должны убедиться, что оба массива отсортированы одинаково, поэтому ключи находятся в одном порядке. – Rizier123
array_combine - лучший способ сделать это, если у вас есть одинаковые ключи в обоих массивах. посмотрите http://php.net/manual/en/function.array-combine.php –
спасибо за комментарии, Ive только что осознал ошибку в том, что я опубликовал, просто работаю над обновленным вопросом – atoms