Спасибо, парни.

Я буксирую эту уже больше суток, и для меня это слишком сложно! Я пытаюсь удалить последние 3 символа из каждого значения в массиве. В настоящее время я пробовал преобразовать в строку, затем выполнить действие, а затем перейти в новый массив ... ничего не получается. Кто-то предложил это, но это не работает. Мне нужен массив почтовых индексов, «EC1 2AY, EC3 4XW ...», преобразованный в «EC1, EC3, ...», и он снова будет в массиве !!

implode(" ",array_map(function($v){ return ucwords(substr($v, 0, -3)); }, 
array_keys($area_elements)));

Это не сработало, и, очевидно, когда я преобразовываю в строку и выполняю функцию обрезки, она берет только последние 3 символа из последней «переменной» в строке.

Отправьте ПОМОЩЬ!

0
Nathan Winch 25 Сен 2018 в 01:37

2 ответа

Лучший ответ

Если вы хотите вернуть массив, вам не следует implode. Вы почти там:

$area_elements = ['EC1 2AY', 'EC3 4XW'];

$result = array_map(function($v){ 
  return trim(substr($v, 0, -3)); 
}, $area_elements);

var_dump($result);

Выход:

array(2) {
  [0]=>
  string(3) "EC1"
  [1]=>
  string(3) "EC3"
}
0
msg 24 Сен 2018 в 22:59

Другое решение: altering array by reference .

Отрывок

$area_elements = ['EC1 2AY', 'EC3 4XW'];

foreach($area_elements as &$v){ 
  $v = substr($v, 0, -4); 
}

print_r($area_elements);

Выход

Array
(
    [0] => EC1
    [1] => EC3
)

Интерактивная демонстрация

Пропустить по ссылке документы

0
Smartpal 25 Сен 2018 в 03:50