2013-03-24 3 views
1

У меня есть массивы, которые имеют каждые 4 значения в них, названные:Как отредактировать этот массив в цикле for?

$myarray_row0 
$myarray_row1 
$myarray_row2 

Так обычно я могу использовать это эхо заявление, чтобы получить на значения в первом массиве:

echo 'My value is '.$myarray_row0[0]; // This works fine 

Но я хотите использовать цикл для перебора через них, и я застрял, потому что я хочу использовать что-то вроде:

for ($i=0; $i<=10; $i++) 
{ 
echo 'My value is '.$myarray_row[$i][[$i]]; 
echo 'My value is '.$myarray_row[$i][$i+1]]; 
echo 'My value is '.$myarray_row[$i][[$i+2]]; 
echo 'My value is '.$myarray_row[$i][[$i+3]]; 
} 

Я не использую правильный синтаксис для $ я это й скобка нужна ... Я ПЫТАЮСЬ (но не суметь), чтобы получить эхо выплюнуть содержимое массивов, такие как:

$myarray_row0[0] 
$myarray_row0[1] 
$myarray_row0[2] 
$myarray_row0[3] 
etc 

Обратите внимание, что это на самом деле не многомерный массив, это одномерный, но он почти СМОТРЕТЬ, как будто он многомерен, поскольку имена массива имеют в них «row0», «row1», «row2» и т. д.

Кто-нибудь знает синтаксис для получения переменной, такой как $ myarray_row0 [1], чтобы быть эхом, используя $ i, доступные внутри цикла for?

СПАСИБО!

ответ

2

Вы должны были бы использовать переменную имя переменной. (Его было некоторое время, так как ив использовал PHP поэтому может быть неправильно)

for ($i=0;$i<10l$i++) { 
    echo 'My variable name is '.${'myarray_row'.$id}[$i+0]; 
    echo 'My variable name is '.${'myarray_row'.$id}[$i+1]; 
    echo 'My variable name is '.${'myarray_row'.$id}[$i+2]; 
    echo 'My variable name is '.${'myarray_row'.$id}[$i+3]; 
} 

Однако его вообще хорошая идея, чтобы не использовать их вообще. создание многомерного массива вместо этого было бы намного лучше для вашего дела.

Вопрос: если ваш $myarray_rowN имеет 4 элемента, почему ваш пример содержит $i+X в индексе?

наверняка он будет выходить за пределы после первой итерации:/(! 1 + 1 OK, 1 + 2 OK, 1 + 3 OK 1 + 4 OK и т.д.)

возможно что-то подобное могло бы быть лучше ? (может быть Javascript, хотя)

$index = 0; 
$rows = array(); 
while (isset(${'myarray_row'.$i})) { 
    array_push($rows, ${'myarray_row'.$i}); 
} 
foreach ($rows as $row) { 
    echo 'My variable name is '.$row[0]."\r\n"; 
    echo 'My variable name is '.$row[1]."\r\n"; 
    echo 'My variable name is '.$row[2]."\r\n"; 
    echo 'My variable name is '.$row[3]."\r\n"; 
} 
+0

Ник - спасибо!Вы поднимаете БОЛЬШОЙ вопрос, который был проблемой за пределами $ i + x, я не думал об этом, но я мог бы вставить цикл for, который выполняет 4 итерации INSIDE основного цикла, который выполняется 13 раз (он создает таблицы строк). Хорошо, я попробовал. Это работает! У меня есть 2 вложенных цикла ... один выполняется 13 раз, используя $ j, а внутренний цикл работает 4 раза, используя $ i: ** echo 'some html здесь'. $ {'Myarrray_row'. $ J} [$ i]. ' '; ** МНОГО СПАСИБО! –

0

, как о чем-то вроде этого:

foreach($myarray_row0 as $key => $value){ 
echo 'The ' . $key . ' value of this array is: ' . $value; 
} 

выше будет перебирать все значения в $myarray_row0 и эхо текущее значение

+0

Fantastic !! Это тоже работает. СПАСИБО Эван .. Я учусь :) благодаря вам, полезные люди. Приветствия. Не имел понятия об этом методе. –

+0

Evan - первым ответом был тот, у которого был лакомый кусочек, который мне действительно нужен re синтаксис на $ myarray_row0 [0] и т. Д., Поэтому я должен был отметить этот, но ваш совет УДИВИТЕЛЬНО, и я бы хотел отметить его и для ценности! –

+0

@TimDonahue эй, не волнуйся! Рад, что вы все решили. Удачи. –

1

Похоже, вам нужно использовать переменную переменную. Смотрите документы здесь: http://php.net/manual/en/language.variables.variable.php

Что-то, как это должно работать:

for ($i=0;$i<10;$i++) { 
    $var = 'myarray_row'.$i; 
    echo 'My variable name is ' . $$var[$i+0]; 
    ... 
} 
+0

А это выглядит как простой способ: :-) Спасибо, Гибискус, я новичок, поэтому я не знал о переменных переменных $$, но я читаю вашу ссылку. Благодаря! полезно. –

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