Штаны повторю, что list игнорирует не числовые ключи! Для list массив Код (Text): array('a', 'c' => 'c', 'b',) выглядит как Код (Text): array(0 => 'a', 1 => 'b')
Разве: «мы выяснили, что list берет значения только с числовыми ключами» не тоже самое, что: «повторю, что list игнорирует не числовые ключи!»?
Одно и тоже. А теперь задумайтесь над фразой: Для list, массив: Код (Text): Array ( [1] => bob [value] => bob [0] => 0 [key] => 0 ) выглядит, как: Код (Text): Array ( [1] => bob [0] => 0 )
А это я иллюстрировал на примере «от противного» ваше же справедливое замечание, что list присваивает переменным значения с числовыми ключами. Теперь дело за малым, осталось выяснить зачем функция each возвращает четыре значения, а не два.
Спросите у разработчиков языка, если ответят. Я лишь могу предположить, что для extract'a и для тех, кто любит ассоциативные массивы
она возвращает каждое значение в массиве, как и должна возвращать функция обхода массива. В чем проблема то, так и не понял?
Ну не то, чтобы мешает, но пониманию не способствует... В общем вопрос: зачем сделали так, что функция each возвращает аж четыре значения, в то время как достаточно двух, о чем свидетельствует то, что значения повторяются, т.е. образуют две одинаковые пары?
Ну объясните, почему элементов четыре? Ведь пара элементов [0][key] ВСЕГДА содержат одинаковый ключ, а пара элементов [1][value] ВСЕГДА содержат одинаковое значение. Почему не достаточно двух элементов, например [0] который бы содержал в себе ключ элемента массива и элемента [1], который бы содержал в себе значение элемента массива?
Штаны вот представьте себе. идёте вы по улице, у вас спрашивают, который час. вы отвечаете, мол, 23:45. и тут следующий вопрос: мужик, а почему в сутках 24 часа, а в часе 60 минут? почему не сделать 24 минуты? или 100? вы говорите, а хрен, мол, его знает. и собираетесь было идти дальше. но куда там. вас уже крепко держат за галстук и настойчиво требуют ответа. это вопрос из разряда "почему stripslashes пишется вместе, если strip_tags пишется через подчерк". ответ на него -- потому что. p.s. уж извините, если ясности не добавил.
stas_t Мне такая ситуация с функцией each напоминает ситуацию с ключами от квартиры, когда вместо того, чтобы второй комплект ключей оставить у тещи или хотя бы носить его в другом кармане, оба комплекта ключей надевают на один брелок и носят вместе… Если потерял ключи, то можешь не задумываясь ломать и замки на двери Тогда нужно еще одну пару элементов ввести, числоименную, [key0…n]=>ключ [value0…n]=>значение, чтобы одновременно можно было получить отсортированный массив. Был бы смысл вводить пару элементов с ключами в качестве индексов, если бы была еще одна функция, которая в отличие от list, отбрасывала элементы с числовыми ключами-индексами. Может такая функция все же есть в PHP?
Я уже говорил про extract. Она работает как раз в с кючами. PS это скорее вопрос из разряда, почему используют не только 24 часовой но и 12 часовой формат представления времени.
Так у нее же синтаксис совершенно не такой, как у list! А у этой, пока псевдофункции, синтаксис должен быть такой как и у list, но отбрасывать она должна элементы с индексами.
И что? Считай, что специально для неё и оставили символьные ключи. А вобще разработчики просто предоставили альтернативу ИМХО.
если все-таки мешаю дублирующиеся значения, array_unique() используй, чтобы не было одинаковых значений, но ... допустим array("a", "a", "b", "c") то в результате индексы будут такие: 0=>'a', 1=>'', 2=>'b', 3=>'c' но потом можешь отсортировать так, как тебе угодно и будут все индексы по порядку, потом foreach и т.д
Получается ситуация типа - догадайтесь сами. В своих двух толстых книгах ответа нет, здесь в мануале ответа нет.