PHP ломтик массива несколько массив не функционален - PullRequest
2 голосов
/ 18 июля 2011

Следующие разделы $ scpar на два типа, один из которых содержит первые 9, а второй содержит бывшие значения, разделенные запятыми от 10 до 18.

$scpar9 = array_slice($scpar,0,9);
      $scpar18 = array_slice($scpar,9,18);

Затем мы используем foreach и используем параметр id $sid чтобы получить то же значение, разделенное запятыми, из других полей.

foreach ($scpar9 as $sid => $scpar) {

Затем информация берется из других полей, подобных этой.

<b>'.$scpar.'</b> '.$sccomp[$sid].$scmen[$sid].

Что все работает нормально, проблема ввторые 9 полей.

foreach ($scpar18 as $sid => $scpar) {
<b>'.$scpar.'</b> '.$sccomp[$sid].$scmen[$sid].

Поле $scpar является правильным, но поля, содержащие [$sid], начинаются с первого результата, а не с 9-го.

Есть идеи?

Чудесный

Ответы [ 3 ]

1 голос
/ 18 июля 2011

Если вы хотите сохранить ключи ($ sid), вам нужно установить для четвертого параметра значение true для array_slice, см. http://php.net/manual/en/function.array-slice.php

1 голос
/ 18 июля 2011

вам нужно использовать preserve_keys

preserve_keys: Обратите внимание, что array_slice () будет переупорядочивать и сбрасывать индексы массива. по умолчанию. Вы можете изменить это поведение, установив preserve_keys в TRUE.

   $scpar18 = array_slice($scpar,9,18, true);
1 голос
/ 18 июля 2011

array_slice() создает новые массивы, содержащие значения из исходных массивов, а не ключей. Использование ключей в цикле foreach не имеет смысла в контексте исходного массива, поскольку это ключи из новых массивов слайсов.

Используйте array_slice($scpar, 9, 18, true) также для копирования ключей, а не только значений:

$scpar18 = array_slice($scpar, 9, 18, true);
                                  #    ^^^ preserve keys
...