2014-11-24 2 views
-1

Существует цикл:Как получить массив не по ключу?

foreach($data['data'] as $value => $key){ 
    //ODO 
} 

И массив $data['user']. Формат массива:

array(2) { 
    [472]=> 
    array(15) { 
    ... 
    } 
[456] => 
array(16){ 
} 
} 

Как я могу получить элемент массива для каждой итерации цикла?

+6

мутноватый, что вы просите. – Daan

+1

Любой пример текущего и желаемого вывода, который вы могли бы показать? –

+1

Какая ошибка? Нет ошибки? Извините, мы не делаем домашнее задание –

ответ

1

Может быть, это то, что вам нужно:

foreach (array_keys($data['user']) as $key) { 
    echo $data['user'][$key]; 
    echo $data['data'][$key]; 
} 
3

Вторая попытка. Вы можете использовать reset(), current() и next(), чтобы перейти к следующему элементу массива. Таким образом, вы можете запустить курсор на второй массив в то время как вы итератора над первым:

$users = $data['user']; 
reset($users); 
foreach($data['data'] as $value => $key) 
{ 
    $res = current($users); 
    next($users); 
    // Use $res here. 
} 

Примечание, вы назвали переменные $value и $key в цикле, но они должны быть наоборот. Первый - это ключ.

Обычно вы должны использовать next в цикле do..while, потому что следующий переход к следующему элементу и его возврат. Но в этом случае у вас есть другой цикл, поэтому вам нужно объединить current и next, чтобы получить текущий элемент, и затем перейти к следующей строке.

В качестве альтернативы, вы можете использовать each():

$users = $data['user']; 
reset($users); 
foreach($data['data'] as $value => $key) 
{ 
    list($userKey, $res) = each($users); 

    // Use $res here. 
} 
+0

Ключ не $ i // 0,1,2 – Balmus

+0

@Balmus $ i равен 0,1,2 ...! Ответ правильный! – Rizier123

+0

Нет, я думаю, я знаю, что он имеет в виду. $ data ['user'] имеет числовые клавиши, но они явно задают ключи, которые не в порядке. Таким образом, первый элемент не '0', а, например,' 456'. – GolezTrol

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