Как мне сохранить определенное количество элементов в массиве? - PullRequest
0 голосов
/ 09 июля 2009

Как сохранить определенное количество элементов в массиве?

function test($var)
{
    if(is_array($_SESSION['myarray']) {
        array_push($_SESSION['myarray'], $var);
    }
}

test("hello");

Я просто хочу сохранить 10 элементов в массиве $a. Поэтому, когда я вызываю test($var), он должен передать это значение в массив, но сохранить число до 10, удалив некоторые элементы из верхней части массива.

Ответы [ 5 ]

2 голосов
/ 09 июля 2009
while (count($_SESSION['myarray'] > 10)
{
    array_shift($_SESSION['myarray']);
}
1 голос
/ 09 июля 2009

Я бы сделал это:

function test($var) {
    if (is_array($_SESSION['myarray']) {
        array_push($_SESSION['myarray'], $var);
        if (count($_SESSION['myarray']) > 10) {
            $_SESSION['myarray'] = array_slice($_SESSION['myarray'], -10);
        }
    }
}

Если после добавления нового в массиве более 10 значений, возьмите только последние 10 значений.

1 голос
/ 09 июля 2009

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

if(count($_SESSION['myarray']) == 11))
    array_shift($_SESSION['myarray']);
0 голосов
/ 09 июля 2009
function array_10 (&$data, $value)
{
    if (!is_array($data)) {
        $data = array();
    }

    $count = array_push($data, $value);

    if ($count > 10) {
        array_shift($data);
    }
}

Использование:

$data = array();

for ($i = 1; $i <= 15; $i++) {
    array_10($data, $i);
    print_r($data);
}
0 голосов
/ 09 июля 2009
if(count($_SESSION["myarray"]) == 10)
{
 $_SESSION["myarray"][9] = $var;
}
else
{
 $_SESSION["myarray"][] = $var
}

Это должно сделать.

...