За последние 24 часа нас посетили 54376 программистов и 1777 роботов. Сейчас ищут 1044 программиста ...

Функция each

Тема в разделе "PHP для новичков", создана пользователем Штаны, 22 авг 2007.

  1. Штаны

    Штаны Guest

    Да я просто понять хочу.
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Штаны повторю, что list игнорирует не числовые ключи! Для list массив
    Код (Text):
    1. array('a', 'c' => 'c', 'b',)
    выглядит как
    Код (Text):
    1. array(0 => 'a', 1 => 'b')
     
  3. Штаны

    Штаны Guest

    Разве: «мы выяснили, что list берет значения только с числовыми ключами» не тоже самое, что: «повторю, что list игнорирует не числовые ключи!»?
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Одно и тоже. А теперь задумайтесь над фразой:
    Для list, массив:
    Код (Text):
    1. Array
    2. (
    3. [1] => bob
    4. [value] => bob
    5. [0] => 0
    6. [key] => 0
    7. )
    выглядит, как:
    Код (Text):
    1. Array
    2. (
    3. [1] => bob
    4. [0] => 0
    5. )
     
  5. Штаны

    Штаны Guest

    А это я иллюстрировал на примере «от противного» ваше же справедливое замечание, что list присваивает переменным значения с числовыми ключами. Теперь дело за малым, осталось выяснить зачем функция each возвращает четыре значения, а не два.
     
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Спросите у разработчиков языка, если ответят. Я лишь могу предположить, что для extract'a и для тех, кто любит ассоциативные массивы :)
     
  7. Штаны

    Штаны Guest

    Нужно было топик назвать => Загадка функции EACH :)
     
  8. Anonymous

    Anonymous Guest

    она возвращает каждое значение в массиве, как и должна возвращать функция обхода массива.

    В чем проблема то, так и не понял?
     
  9. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    В том что ключ и значение дублируются )) Видимо мешает...
     
  10. Штаны

    Штаны Guest

    Ну не то, чтобы мешает, но пониманию не способствует... В общем вопрос: зачем сделали так, что функция each возвращает аж четыре значения, в то время как достаточно двух, о чем свидетельствует то, что значения повторяются, т.е. образуют две одинаковые пары?
     
  11. Anonymous

    Anonymous Guest

    кому?
    это не так.
     
  12. Штаны

    Штаны Guest

    Ну объясните, почему элементов четыре? Ведь пара элементов [0][key] ВСЕГДА содержат одинаковый ключ, а пара элементов [1][value] ВСЕГДА содержат одинаковое значение. Почему не достаточно двух элементов, например [0] который бы содержал в себе ключ элемента массива и элемента [1], который бы содержал в себе значение элемента массива?
     
  13. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Чтобы обращаться не к числовому ключу, а к именованному.:)
     
  14. Штаны

    Штаны Guest

    Это точно?
     
  15. Anonymous

    Anonymous Guest

    Или что бы обращатся к именнованому ключу, а не к числовому.
     
  16. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Точнее некуда.
     
  17. stas_t

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

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    Штаны
    вот представьте себе. идёте вы по улице, у вас спрашивают, который час. вы отвечаете, мол, 23:45. и тут следующий вопрос: мужик, а почему в сутках 24 часа, а в часе 60 минут? почему не сделать 24 минуты? или 100? вы говорите, а хрен, мол, его знает. и собираетесь было идти дальше. но куда там. вас уже крепко держат за галстук и настойчиво требуют ответа.

    это вопрос из разряда "почему stripslashes пишется вместе, если strip_tags пишется через подчерк". ответ на него -- потому что.

    p.s. уж извините, если ясности не добавил.
     
  18. Штаны

    Штаны Guest

    stas_t
    Мне такая ситуация с функцией each напоминает ситуацию с ключами от квартиры, когда вместо того, чтобы второй комплект ключей оставить у тещи или хотя бы носить его в другом кармане, оба комплекта ключей надевают на один брелок и носят вместе… Если потерял ключи, то можешь не задумываясь ломать и замки на двери :)


    Тогда нужно еще одну пару элементов ввести, числоименную, [key0…n]=>ключ [value0…n]=>значение, чтобы одновременно можно было получить отсортированный массив.


    Был бы смысл вводить пару элементов с ключами в качестве индексов, если бы была еще одна функция, которая в отличие от list, отбрасывала элементы с числовыми ключами-индексами. Может такая функция все же есть в PHP?
     
  19. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Я уже говорил про extract. Она работает как раз в с кючами.
    PS это скорее вопрос из разряда, почему используют не только 24 часовой но и 12 часовой формат представления времени.
     
  20. Штаны

    Штаны Guest

    Так у нее же синтаксис совершенно не такой, как у list! А у этой, пока псевдофункции, синтаксис должен быть такой как и у list, но отбрасывать она должна элементы с индексами.
     
  21. Штаны

    Штаны Guest

    Ладно, хрен с ней. Книгу дочитаю до конца, может и пойму.
     
  22. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    И что? Считай, что специально для неё и оставили символьные ключи. А вобще разработчики просто предоставили альтернативу ИМХО.
     
  23. host

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

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    если все-таки мешаю дублирующиеся значения, array_unique() используй, чтобы не было одинаковых значений, но ...
    допустим array("a", "a", "b", "c")
    то в результате индексы будут такие: 0=>'a', 1=>'', 2=>'b', 3=>'c'
    но потом можешь отсортировать так, как тебе угодно и будут все индексы по порядку, потом foreach и т.д
     
  24. Штаны

    Штаны Guest

    Получается ситуация типа - догадайтесь сами. В своих двух толстых книгах ответа нет, здесь в мануале ответа нет.
     
  25. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Штаны спроси у разработчиков языка.