Подтвердить что ты не робот

PHP: установить все значения в массиве на что-то

Привет, спросите, есть ли способ сделать это без foreach ($ array as $k = > $v). Я знаю, что это сработает, но я ищу более элегантный способ, если вы знаете. Итак, мой массив выглядел так:

1 = 231
2 = 432
3 = 324

Я перевернул его, и он стал: 231 => 1, 432 =>2, 324 => 3. Теперь мне нужно установить все значения в '1'

4b9b3361

Ответ 1

Вы можете использовать array_fill_keys:

$array = array(
    1 => 231,
    2 => 432,
    3 => 324
);

$array = array_flip($array);

$array = array_fill_keys(array_keys($array), 1);

Ответ 2

array_fill_keys() должен быть тем, что вам нужно:

$keys = array_keys($yourArray);
$filled = array_fill_keys($keys, 1);

Ответ 3

Для PHP > 5.3 вы можете использовать анонимные функции.

array_walk($array,function(&$value){$value=1;});

Примечание: значение передается по ссылке.

Ответ 4

Я считаю, что вы ищете эту функцию: array_fill()

Из приведенной выше ссылки:

"Заполняет массив с числовыми значениями значения параметра значения, ключи, начинающиеся с параметра start_index."

Хотя если ваши индексы не являются численными и/или не перечислены (скажем, от 231 до 324 включительно), то вам может быть лучше, как говорит Ракета, array_fill_keys() или ваш обычный foreach.

Ответ 5

Я получил этот пост с тем же вопросом, но в итоге я получил еще один пример.

Зачем использовать array_flip + array_keys вместо простого использования array_values?

$array = array(
    1 => 231,
    2 => 432,
    3 => 324
);

$array = array_fill_keys(array_values($array), 1);

Ответ 6

Любой метод, который вы вызываете, например array_map или fill_keys, все равно будет использовать цикл для итерации по массиву. Похоже, вы хотели бы что-то вроде array_map, которое можно найти здесь

Если вы считаете это более элегантным, каждому свое:)

Ответ 7

array_replace(array_flip($columns), array_fill_keys($columns, 0));