Как получить разделенный запятыми список из x элементов, начиная с y, из другого списка, разделенного запятыми - PullRequest
0 голосов
/ 28 февраля 2019

Скажите, у меня есть список Poland,USA,England,China,Uruguay,Spain,Taiwan,Monaco.Я хочу, чтобы список начинался с 3-го пункта и имел всего 5 элементов.Это означает, что я хочу иметь England,China,Uruguay,Spain,Taiwan.

Как я могу сделать это на PHP?

Ответы [ 5 ]

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

Если вы хотите получить 5 элементов England,China,Uruguay,Spain,Taiwan, вы можете использовать взорвать в сочетании с array_slice и указать 2 для offset и указать 5 для length.

Например:

$str = "Poland,USA,England,China,Uruguay,Spain,Taiwan,Monaco";
$result = array_slice(explode(',', $str),2, 5)
print_r($result);

Результат:

Array
(
    [0] => England
    [1] => China
    [2] => Uruguay
    [3] => Spain
    [4] => Taiwan
)

См. php demo

Тогда вы можететакже используйте implode , чтобы получить результат, как в вашем примере:

echo implode(',', $result);
// England,China,Uruguay,Spain,Taiwan
0 голосов
/ 28 февраля 2019

Просто еще один способ, как функция, возвращает новый список, если новый список можно вернуть, иначе возвращает false ....

<?php

function formatList ( $l, $c, $s, $r )
{
    $s -= 1;

    $p = explode ( $c, $l );

    return ( $r + $s ) <= count ( $p ) ? implode ( $c, array_slice ( $p, $s, $r ) ) : FALSE;
}   

$list = 'Poland,USA,England,China,Uruguay,Spain,Taiwan,Monaco';

$split_on = ',';

$start_on = 3;

$return_total = 5;

echo formatList ( $list, $split_on, $start_on, $return_total ); // should be in a if(), just for example


?>
0 голосов
/ 28 февраля 2019
<?php
$list = "Poland,USA,England,China,Uruguay,Spain,Taiwan,Monaco";
$listArray = explode(",",$list);
print_r($listArray);
$startlist = 3; // Here you can set where you have start
if($startlist<count($listArray)){
    print_r(implode(",",array_slice($listArray,$startlist)));
}else{
    echo "Start limit exceed length of string";
}

?>

Выход для положительного сценария установлен $startlist = 3;

Array
(
    [0] => Poland
    [1] => USA
    [2] => England
    [3] => China
    [4] => Uruguay
    [5] => Spain
    [6] => Taiwan
    [7] => Monaco
)
China,Uruguay,Spain,Taiwan,Monaco

для отрицательного сценария установлен $startlist = 8;

Array
(
    [0] => Poland
    [1] => USA
    [2] => England
    [3] => China
    [4] => Uruguay
    [5] => Spain
    [6] => Taiwan
    [7] => Monaco
)
Start limit exceed length of string
0 голосов
/ 28 февраля 2019

Вы можете установить лимит для функции разнесения (3-й аргумент) и получить последний элемент массива результатов

$str = 'Poland,USA,England,China,Uruguay,Spain,Taiwan,Monaco';
echo $result = explode(',', $str, 3)[2]; //England,China,Uruguay,Spain,Taiwan,Monaco

Из doc

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

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

Вы можете просто преобразовать строку в массив, например

$str = "Poland,USA,England,China,Uruguay,Spain,Taiwan,Monaco";
$array = explode(",",$str);

, а затем использовать array_slice, чтобы пропустить первые 2 элемента

print_r(implode(",",array_slice($array,2)));

...