2015-08-16 3 views
0

Я использовал array_chunk, чтобы разделить мой массив на части.Хранение массивов в переменных

Это моя структура массива в настоящее время:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 10 
      [2] => 100 
      [3] => 101 
      [4] => 102 
      [5] => 103 
     ) 

    [1] => Array 
     (
      [0] => 104 
      [1] => 105 
      [2] => 106 
      [3] => 107 
      [4] => 108 
      [5] => 109 
     ) 

    [2] => Array 
     (
      [0] => 11 
      [1] => 110 
      [2] => 111 
      [3] => 112 
      [4] => 113 
      [5] => 114 
     ) 

    [3] => Array 
     (
      [0] => 115 
      [1] => 116 
      [2] => 117 
      [3] => 118 
      [4] => 119 
      [5] => 12 
     ) 

    [4] => Array 
     (
      [0] => 120 
      [1] => 121 
      [2] => 122 
      [3] => 123 
      [4] => 124 
      [5] => 125 
     ) 

    [5] => Array 
     (
      [0] => 126 
      [1] => 127 
      [2] => 128 
      [3] => 129 
      [4] => 13 
      [5] => 130 
     ) 

    [6] => Array 
     (
      [0] => 131 
      [1] => 132 
      [2] => 133 
      [3] => 134 
      [4] => 135 
      [5] => 136 
     ) 

    [7] => Array 
     (
      [0] => 137 
      [1] => 138 
      [2] => 139 
      [3] => 14 
      [4] => 140 
      [5] => 141 
     ) 

    [8] => Array 
     (
      [0] => 142 
      [1] => 143 
      [2] => 144 
      [3] => 145 
      [4] => 146 
      [5] => 147 
     ) 

    [9] => Array 
     (
      [0] => 148 
      [1] => 149 
      [2] => 15 
      [3] => 150 
      [4] => 151 
      [5] => 152 
     ) 

    [10] => Array 
     (
      [0] => 153 
      [1] => 154 
      [2] => 155 
      [3] => 156 
      [4] => 157 
      [5] => 158 
     ) 

    [11] => Array 
     (
      [0] => 159 
      [1] => 16 
      [2] => 160 
      [3] => 161 
      [4] => 162 
      [5] => 163 
     ) 

    [12] => Array 
     (
      [0] => 164 
      [1] => 165 
      [2] => 166 
      [3] => 167 
      [4] => 168 
      [5] => 169 
     ) 

    [13] => Array 
     (
      [0] => 17 
      [1] => 170 
      [2] => 171 
      [3] => 172 
      [4] => 173 
      [5] => 174 
     ) 

    [14] => Array 
     (
      [0] => 175 
      [1] => 176 
      [2] => 178 
      [3] => 18 
      [4] => 19 
      [5] => 2 
     ) 

    [15] => Array 
     (
      [0] => 20 
      [1] => 21 
      [2] => 22 
      [3] => 23 
      [4] => 28 
      [5] => 29 
     ) 

    [16] => Array 
     (
      [0] => 3 
      [1] => 30 
      [2] => 31 
      [3] => 32 
      [4] => 33 
      [5] => 34 
     ) 

    [17] => Array 
     (
      [0] => 35 
      [1] => 36 
      [2] => 37 
      [3] => 38 
      [4] => 39 
      [5] => 4 
     ) 

    [18] => Array 
     (
      [0] => 40 
      [1] => 41 
      [2] => 42 
      [3] => 43 
      [4] => 44 
      [5] => 45 
     ) 

    [19] => Array 
     (
      [0] => 46 
      [1] => 47 
      [2] => 48 
      [3] => 49 
      [4] => 5 
      [5] => 50 
     ) 

    [20] => Array 
     (
      [0] => 51 
      [1] => 6 
      [2] => 69 
      [3] => 7 
      [4] => 8 
      [5] => 86 
     ) 

    [21] => Array 
     (
      [0] => 87 
      [1] => 88 
      [2] => 89 
      [3] => 9 
      [4] => 90 
      [5] => 91 
     ) 

    [22] => Array 
     (
      [0] => 92 
      [1] => 93 
      [2] => 94 
      [3] => 95 
      [4] => 96 
      [5] => 97 
     ) 

    [23] => Array 
     (
      [0] => 98 
      [1] => 99 
     ) 
) 

Как я могу хранить каждый из 24 массивов в свою переменную таким образом я могу получить доступ к элементам этого массива легко на веб-странице позже?

Я хочу что-то вроде этого (цифры основаны на числах, указанных в массиве выше):

$array1 = array(1,10,100,101,102,103); 
$array2 = array(104,105,106,107,108,109); 

Может кто-нибудь, пожалуйста, помогите мне и написать функцию, которая делает что-то вроде этого (так вход фрагментированных массив, а затем сохранить каждый кусок в своей переменной)?

----- UPDATE -----

Все отлично теперь работает, но я заметил небольшую проблему.

Функция, которую я использую:

<?php 

function gallery_1() 
{ 
    $picture_ids = array( 1,10,100,101,102,103, 
          104,105,106,107,108,109, 
          11,110,111,112,113,114, 
          115,116,117,118,119,12, 
          120,121,122,123,124,125, 
          126,127,128,129,13,130, 
          131,132,133,134,135,136, 
          137,138,139,14,140,141, 
          142,143,144,145,146,147, 
          148,149,15,150,151,152, 
          153,154,155,156,157,158, 
          159,16,160,161,162,163, 
          164,165,166,167,168,169, 
          17,170,171,172,173,174, 
          175,176,178,18,19,2, 
          20,21,22,23,28,29, 
          3,30,31,32,33,34, 
          35,36,37,38,39,4, 
          40,41,42,43,44,45, 
          46,47,48,49,5,50, 
          51,6,69,7,8,86, 
          87,88,89,9,90,91, 
          92,93,94,95,96,97, 
          98,99); 

    $n = 6; // number of pictures in each row 

    echo '<div class="row">' . PHP_EOL; 
    for ($i = 0; $i < count($picture_ids); $i++) 
    { 
     // start a new row after each $n pictures 
     if (($i > 0) && ($i % $n === 0)) 
     { 
      echo '</div>' . PHP_EOL; 
      echo '<div class="row">' . PHP_EOL; 
     } 

     echo '<article class="6u 12u$(xsmall) work-item" style="width: 40%;">' . PHP_EOL; 
     echo '<a href="images/originals/' . $picture_ids[$i] . '.jpg" class="image fit thumb"><img src="images/thumbs_large/' . $picture_ids[$i] . '.jpg" alt="" /></a>' . PHP_EOL; 
     echo '</article>' . PHP_EOL; 
    } 
    echo '</div>' . PHP_EOL; 
} 

?> 

Вы можете увидеть его в действии здесь: http://aleksvujic.eu/gallery1.php

Но если я вставляю те же изображения, но без функции PHP (голый HTML код) выглядит следующим образом http://aleksvujic.eu/gallery_eng.php (обратите внимание, что между изображениями, например, по первой ссылке, нет пробелов!)

Может ли кто-нибудь помочь мне, как исправить это? :)

+1

Почему вы хотите, чтобы разделить их на несколько переменных? Доступ к элементам уже прост: 'echo $ array [2] [3];' будет печатать '112'. –

+0

Потому что я хочу написать функцию, которая возвращает столько переменных, содержащих 6 чисел, сколько массивов. Мне гораздо легче использовать это. – AleksVujic

+0

Мне трудно думать о случае, когда это будет проще, потому что тогда вам нужно отслеживать неизвестное количество переменных (массивов). Однако, если это действительно то, что вы хотите, ответ от @ciro должен выполнить эту задачу ... –

ответ

0

Если я правильно понимаю ваш ответ, вы хотите создать галерею изображений со множеством строк по шесть картин каждый. В этом случае вам, возможно, не нужно зажимать массив. Вместо этого, следующий php также решает следующее:

$picture_ids = array(
    1, 10, 100, 101, 102, 103, 
    104, 105, 106, 107, 108, 109, 
    11, 110, 111, 112, 113, 114 
    // and as many more as needed, in the order you specify 
); 

$n = 6; // number of pictures in each row 

echo '<div class="row">' . PHP_EOL; 
for ($i = 0; $i < count($picture_ids); $i++) { 
    // start a new row after each $n pictures 
    if (($i > 0) && ($i % $n === 0)) { 
     echo '</div>' . PHP_EOL; 
     echo '<div class="row">' . PHP_EOL; 
    } 

    echo '<article class="6u 12u$(xsmall) work-item" style="width: 40%;">' . PHP_EOL; 
    echo '<a href="images/originals/' . $picture_ids[$i] . '.jpg" class="image fit thumb"><img src="images/thumbs_large/' . $picture_ids[$i] . '.jpg" alt="" /></a>' . PHP_EOL; 
    echo '</article>' . PHP_EOL; 
} 
echo '</div>' . PHP_EOL; 

Помогает ли это?

(Небольшое примечание: если вы пишете HTML (не верстку), вам не нужно, чтобы закончить <img ...> тег с косой чертой)

+0

Это именно то, что мне нужно! Спасибо огромное! – AleksVujic

+0

Добро пожаловать, рад, что смогу помочь! Для будущих вопросов: может быть полезно сделать один шаг назад и объяснить в вопросе, что вы хотите достичь (а затем рассказать, что вы пробовали до сих пор). Таким образом, легче дать полезный anser реальной проблеме. –

0

Попробуйте

foreach($array as $key => $value){ 
     $newName = "array".($key+1); 
     $$newName = $value; 
} 

$ массив является результатом работы array_chunk

0

Так что вы имеете в виду что-то вроде этого?

<?php 

function gallery($array) 
{ 
    $chunk = array_chunk($array, 6); 

    foreach($chunk as $key => $value) 
    { 
     $newName = "array".($key+1); 
     $$newName = $value; 
    } 

    return $value; 

} 

?> 
+0

Нет. Это не сработает, поскольку новые переменные не будут доступны вне функции. AFAIK, вы не можете сделать это в функции, если заранее не знаете, сколько массивов создаст функция. (и тогда вам понадобится ключевое слово 'global', чтобы сообщить функции об этих массивах) –

Смежные вопросы