Перебор значений массива в цикле

// Перебор значений ассоциативного массива в цикле, без использования foreach

function NewRandAssociationArray($sizeArray = 5) // функция генерации ассоциативного массива, по умолчанию с 5-тью записями
{
    $newArray = array(); // создадим пустой массив
    $strForKey = '1234567890qwertyuiopasdfghjklzxcvbnm'; // набор символов для генерации ключа массива
    while (count($newArray) < $sizeArray) { // если меньше или равно $sizeArray то выполняем цикл
        // заполним массив случайными числами и ключами в цикле
        $var = rand(0, 100); // получаем случайное число для ключа от 0 до 100
        $key = $strForKey[rand(0, strlen($strForKey))] . $strForKey[rand(0, strlen($strForKey))] . $strForKey[rand(0, strlen($strForKey))]; // создаем ключ из трех случайных символов из $strForKey
        if ((in_array($var, $newArray) === false) && (array_key_exists($key, $newArray)) === false) { // если такого значения и ключа еще нет в массиве, то добавим запись в массив
            $newArray[$key] = $var;
        }
    }
    return $newArray;
}


$arr = NewRandAssociationArray();


var_dump($arr);


echo 'v1'."\n";
reset($arr); // устанавливает внутренний указатель массива на его первый элемент
for ($i=(count($arr)); $i!=0; --$i) { // цикл по размеру массива
    echo key($arr).' => '.current($arr)."\n"; 
    next($arr); // перемещает указатель массива вперед на один элемент
}


echo 'v2'."\n";
reset($arr);
for ($i = (count($arr)); $i != 0; --$i, next($arr)) {
    echo key($arr) . ' => ' . current($arr) . "\n";
}


echo 'v3'."\n";
reset($arr);
while (key($arr) != null) { // цикл пока есть полученные значения
    echo key($arr) . ' => ' . current($arr) . "\n";
    next($arr);
}


echo 'v4 reverse'."\n";
end($arr); // устанавливает внутренний указатель массива на его последний элемент
while (key($arr) != null) {
    echo key($arr) . ' => ' . current($arr) . "\n";
    prev($arr); // передвигает внутренний указатель массива на одну позицию назад
}
array(5) {
  ["gad"]=>
  int(63)
  ["01y"]=>
  int(39)
  ["n86"]=>
  int(53)
  ["jya"]=>
  int(60)
  ["w3g"]=>
  int(28)
}

v1
gad => 63
01y => 39
n86 => 53
jya => 60
w3g => 28

v2
gad => 63
01y => 39
n86 => 53
jya => 60
w3g => 28

v3
gad => 63
01y => 39
n86 => 53
jya => 60
w3g => 28

v4 reverse
w3g => 28
jya => 60
n86 => 53
01y => 39
gad => 63

php array reset end current next prev

просмотров: 1099