PHP: Как удалить первые два символа из каждой строки в массиве? - PullRequest
0 голосов
/ 25 февраля 2019

Иметь:

[0] => 0-3019
[1] => 0-3020
[2] => 0-1031
[3] => 0-3021
[4] => 0-1004
[5] => 0-3011

Хочу:

[0] => 3019
[1] => 3020
[2] => 1031
[3] => 3021
[4] => 1004
[5] => 3011

Не уверен, как от него избавиться, пробовал это.

Редактировать: Вот код, который я пробовал:

$files = array_keys($_FILES);

foreach ($files AS $f) {
    $f = substr($f,2);
}

По какой-то причине он работает внутри forloop, но фактически не сохраняет каждый элемент как саму версию подстроки :(

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы можете ссылаться на & каждый экспонированный элемент, чтобы изменить оригинал:

foreach ($files as &$f) {
    $f = substr($f, 2);
}

Или изменить исходный массив, используя ключ:

foreach ($files as $k => $f) {
    $files[$k] = substr($f, 2);
}
0 голосов
/ 25 февраля 2019

Допустим, имя вашего массива равно $elements, вы можете перебрать каждый элемент массива и использовать PHP substr для замены текущего значения частью строки.

Чтоsubstr($string, $start, $length) принимает часть строки $string длиной $length, начиная с $start.

<?php
foreach ($elements as $index=>$element) {
    $elements[$index] = substr($element, 2);
}
?>

ОБНОВЛЕНИЕ

Еслиэто индекс, который необходимо изменить, вы можете сделать следующее:

<?php
foreach ($elements as $index=>$element) {
    $new_index = substr($index, 2);
    $elements[$new_index] = $element;

    unset($elements[$index]);
}
?>
...