За последние 24 часа нас посетили 39128 программистов и 1278 роботов. Сейчас ищут 1019 программистов ...

ключи массива

Тема в разделе "PHP для новичков", создана пользователем machetero, 5 июл 2015.

  1. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Встретил в чужом коде, пишут ключи массива(числовые не буквенные) без кавычек. Например так $array[0]. Проверил у себя echo $array[0]. Всё работает. Это нормальная практика и лучше воздерживаться от такого(и писать кавычки всегда)? На всех ли версиях пхп это будет работать ?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это обращение к первому элементу массива. и массив не ассоциативный, поэтому нет строки которую нужно обрамлять кавычками. матчасть.
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  4. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Можно даже так писать:
    Код (PHP):
    1. $arr = array();
    2. $arr[] = 'Красный'; // Тут предполагается $arr[0]
    3. $arr[] = 'Синий'; // Тут  $arr[1]
    4.  
     
  5. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Вы не совсем правы.
    Это обращение к элементу массива с ключём 0. Первый элемент массива может быть любым.
     
  6. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Chushkin, а как определить первый элемент массива?

    Добавлено спустя 1 минуту 39 секунд:
    Я сделала так, и элемент с ключом 0 оказался первым:
    Код (PHP):
    1. <?php
    2. $arr[-1] = 'Синий';
    3. $arr[1] = 'Красный';
    4. $arr[0] = 'Зелёный';
    5.  
    6. print_r($arr);
    7. ?>
    Array ( [0] => Синий [1] => Красный [-1] => Синий )

    Добавлено спустя 2 минуты 57 секунд:
    Вообще поняла, что вы правы. Элемента с индексом 0 может и не быть.
     
  7. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    В общем случае будет что-то вроде:
    Код (PHP):
    1. $a['первый'] = 'первый в массиве, именованный ключ';
    2. $a[] = 'второй в массиве, первый цифровой ключ (=0)';
    3. $a[5] = 'третий в массиве, второй цифровой ключ (=5, явно заданный)';
    4. $a[] = 'четвёртый в массиве, третий цифровой ключ (=6, т.е. последний цифровой + 1)';
    5. // и т.д.
    6. print_r($a);
    7.  
    Добавлено спустя 3 минуты 41 секунду:
    Просто:
    Код (PHP):
    1. reset($a);
     
  8. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Это интересно, а как-нибудь можно проверить, какой по счёту элемент в массиве без print_r то есть взять элемент и проверить, какой он там по счёту?
     
  9. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Просто так - нет, увы.
    Можно получить ключ текущего, затем с помощью foreach() найти позицию.
     
  10. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Ясненько. Теперь читаю про reset() и какой-то таинственный указатель. Можно узнать, зачем он нужен и где применяется?
    Указатель можно навести на любой элемент и считать при помощи current(), я правильно понимаю? А как навести указатель на элемент?
     
  11. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    читайте мануал. next(), prev(), end() ...
     
  12. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    На следующий, предыдущий и последний. Уже знаю.
    А на заданный?
     
  13. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    что значит "заданный"?
    указатель он один, и указывает на одну конкретную позицию. двигайте его куда надо и получайте значение. просто как 3 рубля
     
  14. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Хочу сразу сдвинуть указатель на элемент массива $arr[25] сразу. Такое возможно?

    Добавлено спустя 19 минут 54 секунды:
    И этот вопрос не только меня интересует http://searchengines.guru/showthread.php?t=258693
     
  15. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    вы же уже сделали это))
     
  16. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Эврика! Вот и всё, чего я хотела! :)
     
  17. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    обращение к элементу массива по ключу, не сдвигает внутренний указатель на этот элемент, ибо это совсем не одно и тоже.
     
  18. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    $arr[25] это обращение к элементу [ ассоциативного ] массива с индексом 25. то же самое можно написать как $arr['25'] — эти выражения эквивалентны.

    это обращение по ключу, а не к "двадцатьпятому" или "двадцатшестому по счету от начала", т.к. порядок может быть любой. по порядку вы можете перебирать только последовательно или прыгнуть в начала и конец: reset(), end(), next(), prev() либо each()
     
  19. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    artoodetoo
    На форуме что-то глюкнуло и были потеряны последние комментарии. :(
    ТС воде как ответила runcore, что-то вроде "Я знаю".
    Или я что-то попутал?