| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > индекс массива 0 == '0' |
| Автор: bars80080 12.9.2008, 10:21 | ||
я честно говоря удивлён, $a[0] == $a['0'] неужели с этим ничего нельзя поделать? |
| Автор: SergeCpp 12.9.2008, 10:39 | ||||
Об этом же написано в http://php.net/manual/en/language.types.array.php
P.S. (там же) Example #1 Using array()
|
| Автор: bars80080 12.9.2008, 11:25 |
| м-да, не есть гуд |
| Автор: Sunvas 12.9.2008, 13:31 |
Почему? Вроде как логично. |
| Автор: bars80080 12.9.2008, 13:43 |
| ну, как. допустим я делаю массив имён файлов, что находятся в директории. как просто было бы - численные индексы: имена файлов, ассоциативные: имена директорий. а так приходится указывать ещё и тип. но это просто пример под конкретную задачу. суть всё же, что было бы хорошо иметь разделение, а так происходит замещение |
| Автор: gta4kv 12.9.2008, 14:41 | ||
| bars80080, И вообще, если тебе нужны численные индексы, почему нельзя писать:
???? Добавлено @ 14:43 Хотя смысла в этом не вижу, использовать слова было бы разумнее, и понятнее через год |
| Автор: bars80080 12.9.2008, 16:21 |
| та нет, вопрос не в том что можно извернуться если захотеть я узнал о таком факте, только когда захотел вычитать каталог файлов на любую глубину. и чтобы провести простое разбиение на файлы и каталоги хотел задать в массиве первые численными индексами, а вторые строками. но фиг с ним, важно, что по сути $a[0] $a['0'] - вообще-то не одно и то же. когда мы указываем какие-то обработки или формирования, мы всегда знаем с какими ключами имеем дело. если первые я могу пересчитать в цикле for(), то вторые нет. ну, != это и есть != . пусть у пхп есть разные степени сравнения, но здесь-то хотя бы могли жёстко определить |
| Автор: bobik02 12.9.2008, 16:44 |
что в этом контексте значит "первые...вторые" ? |
| Автор: nerezus 12.9.2008, 16:56 | ||
|
| Автор: bobik02 12.9.2008, 18:05 |
тогда и первые и вторые ты сможешь пересчитать итеративно . |
| Автор: bars80080 12.9.2008, 18:12 |
| bobik02, да вопрос не в пересчёте, а в том, что внесение в массив жлемента с ассоциативным ключом, он легко может вытеснить элемент с численным ключом |
| Автор: Sunvas 12.9.2008, 19:17 |
| bars80080, ну так заведи два массива! Чего все в один пихать? |
| Автор: bars80080 12.9.2008, 19:49 |
| одно дерево - один массив. или сколько я должен создать массивов для каталога с глубиной в пять уровней? |
| Автор: skyboy 12.9.2008, 20:06 | ||
как просто было бы: ассоциативный массив, ключ - имя файла/папки. в элементах, соответствующих папке, кроме элементов "dateCreated" и "dateUpdated" есть элемент-массив "children" - вложенный папки и файлы. и обходись одним деревом. |
| Автор: Mal Hack 12.9.2008, 20:16 |
Что значит не есть ГуД? Машина в принципе не может использовать ассоциативные массивы. Все индекса все равно числа. Например в С++ std::map, делает взаимного соответствие между массивом ключей и значений... Это матчасть. То, что все, чтобы вы не передали в PHP в качестве аргумента оператора [] будет неявно преобразовываться в int. Матчасть из С++ - int by default... |
| Автор: bars80080 12.9.2008, 20:43 | ||
но как-то же извлекается разница между:
? |
| Автор: gta4kv 12.9.2008, 20:54 |
| bars80080, ковычки? |
| Автор: Mal Hack 12.9.2008, 20:55 | ||
| bars80080, я думаю поймешь, что написано в документации, если я правильно понял в чем твой вопрос заключается. http://www.php.net/manual/en/language.operators.comparison.php
Вообще, все это из-за нулевой типизации в PHP.... |
| Автор: bars80080 12.9.2008, 21:14 |
| вооот, жаль что именно жёсткое сравнивание типов не применяется в массивах. конечно, хорошо было бы, если б можно было самому задавать, но если уж выбирать в этом случае, я бы выбрал жёсткий |
| Автор: Mal Hack 12.9.2008, 21:43 |
| Ну вот это гребанная политика PHP... Поэтому он - недоязык... |
| Автор: skyboy 12.9.2008, 22:23 | ||
а что в качестве индекса нельзя использовать массив или объект нельзя - не "жалко"? в смысле? Тьюринг-неполный? |
| Автор: bars80080 12.9.2008, 22:28 | ||
но хотелось ещё проще |
| Автор: Mal Hack 12.9.2008, 23:34 |
Нет типизации. |
| Автор: nerezus 13.9.2008, 08:54 | ||||||
Типизация есть, и она вполне себе dynamic и weak(контроль типов). Хотя я предпочитаю dynamic strong(кстати наш препод по ООП был уверен, что не бывает такой) на примере python. Что касается недоязыка - то он может ВСЕ в своей области. В том числе и полноценное ООП. |