Substr все значение в массиве - PullRequest
0 голосов
/ 23 марта 2020

Я хочу сделать substr для каждого значения в моем массиве, но это не удалось. Я просто могу заставить работать работать с подстрокой, когда я пытаюсь сделать цикл внутри моего массива, а затем подстановить один за другим мое значение. Но дело не в том, что я хочу

У меня есть массив:

Array ( [0] => 41136.07.6 [1] => 21511.01.1 )

Ожидаемый результат:

Array ( [0] => 41136 [1] => 21511 )

Пока я просто делаю это так:

$temp = $this->input->post('account');
for ($count=0; $count < count($temp); $count++) {
    $accounttemp=substr($temp[$count], 0, 5);

    # code...
}

Возможно ли это или есть какая-либо функция, которая позволяет изменить мой массив напрямую, без зацикливания?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 23 марта 2020

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

$arr = ['41136.07.6', '21511.01.1'];

function substr05(&$item) {
   $item = substr($item, 0, 5);
}

array_walk($arr, "substr05");

print_r($arr);
# Array
# (
#    [0] => 41136
#    [1] => 21511
# )

Онлайн подтверждение

0 голосов
/ 23 марта 2020

Вы можете использовать array_map() для достижения желаемого.

$array = ['41136.07.6', '21511.01.1'];

$output = array_map(function($val) {
    return substr($val, 0, 5);
}, $array);

print_r($output);

См. Документы здесь .

0 голосов
/ 23 марта 2020

Вы можете использовать foreach l oop, добавив & к параметру значения, чтобы разрешить его изменение в l oop. Например:

$temp = array('41136.07.6', '21511.01.1');

foreach ($temp as &$accountnum) {
    $accountnum = substr($accountnum, 0, 5);
    // do some other stuff
}
print_r($temp);

Вывод:

Array
(
    [0] => 41136
    [1] => 21511
)

Демонстрация на 3v4l.org

...