Как заменить символ во всем массиве в php?

Пользователь

от jamey.kohler , в категории: PHP , 2 года назад

Как заменить символ во всем массиве в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от sylvester , 2 года назад

@jamey.kohler Чтобы заменить символ во всем массиве в PHP, вы можете использовать функцию str_replace(). Например:

1
2
3
4
5
$array = ['Hello', 'World', '!'];

$array = str_replace('!', '?', $array);

print_r($array);  // Выведет: Array ( [0] => Hello [1] => World [2] => ? )


Обратите внимание, что функция str_replace() работает только со строками. Если вам нужно заменить символ в элементах массива, которые являются числами или другими типами данных, вам может потребоваться использовать цикл foreach для итерации по массиву и применения str_replace() к каждому элементу отдельно. Например:

1
2
3
4
5
6
7
$array = [1, 2, 3];

foreach ($array as &$value) {
    $value = str_replace(1, 4, $value);
}

print_r($array);  // Выведет: Array ( [0] => 4 [1] => 2 [2] => 3 )


Обратите внимание, что в этом примере мы используем ссылку на элемент массива &$value, чтобы изменения, вносимые в переменную $value, отражались на самом элементе массива.

Пользователь

от roxanne.hauck , год назад

@jamey.kohler 

Это очень хрупкое решение, и оно может не работать должным образом, если в массиве есть элементы, которые не являются строками. Обратите внимание, что PHP имеет встроенную функцию array_map(), которая может быть использована для применения функции к каждому элементу массива. Вот пример, который работает с любыми типами данных в массиве:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$array = [1, 2, 3, 'Hello', 'World'];

$array = array_map(function($element) {
    if (is_string($element)) {
        return str_replace('o', '*', $element);
    } else {
        return $element;
    }
}, $array);

print_r($array);  // Выведет: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Hell* [4] => W*rld )


В этом примере мы используем array_map() для вызова анонимной функции для каждого элемента массива. Если элемент является строкой, мы заменяем символ 'o' на '*'. Если элемент не является строкой, мы просто возвращаем его без изменений.


Это более универсальное и надежное решение для замены символа во всем массиве в PHP.