- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
if (!is_array($arFilter))
$filter_keys = Array();
else
$filter_keys = array_keys($arFilter);
for ($i=0; $i<count($filter_keys); $i++)
{
$key = strtoupper($filter_keys[$i]);
$val = $arFilter[$filter_keys[$i]];
// ....
}
Ничё, скоро RIW'11 - по выступлениям битриксоидов и узнаем...
чё им там выдают
Я думаю начнут они выпускать ОС за 1.000.000 люди покупать будут, ведь такая цена, значит качество! И ведь это же 1С!
«В любом языке программирования существуют так называемые идиомы, то есть повсеместно применяемые способы использования тех или иных конструкций. Например, в языке PHP к таким идиомам можно отнести форму записи цикла по элементам массива:
или
»
Они б ещё Кайл добавили
В чем проблема, напиши авторам пыха, чтобы фор и вайл убрали из языка, foreach же есть:)
Есть там foreach по ссылке. Он, правда, немного ёбнутый. Но если знать про одну багофичу - вполне рабочий.
Как ты будешь решать задачу "найти индекс минимального элемента в массиве", иксперт?
foreach ([42,100500, 13] as $i => $v) вполне нормально обойдет все элементы массива. В $i будут индексы (0,1,2), в $v - значения (42,100500,13).
Правда порядок обхода может сбоить из-за того, что foreach обходит элементы в порядке их вставки в array.
> PHP не знаю
Да можно и не создавать класс. Ибо они и на самом обычном array дают разные результаты.
И только пых как всегда.
Боюсь, мартышка тут ты:(
P.S. Анонимус уже всё сказал.
А вообще, за время срача полилога забываются предыдущие реплики, запоминаются только некоторые моменты из последней. Отвечаешь на эти моменты, тебе отвечают на твои моменты (а не на суть). И наступает момент, когда оглядываешь дерево комментариев целиком, а там безудержное БЕЗУМИЕ.
С таким же успехом можно switch предложить запретить к использованию:(
чойто неизвестной? Я вот прогуляюсь до первого NULLа, и все узнаю.
Про итераторы см мой коммент выше
Тонкая грань. Если развивать дальше, то все массивы/списки/другие структуры данных имеют известную длину, но её иногда нельзя вычислить (вообще или за заданное время). И последнее слово будет за применимостью теории.
--------
Ну вот вам педивикия:
In computer science, an array data structure or simply an array is a data structure consisting of a collection of elements (values or variables), each identified by at least one array index or key. An array is stored so that the position of each element can be computed from its index tuple by a mathematical formula.
Сиречь не только со случайным доступом но и с константным временем доступа. Ну типа НачалоМассива+(РазмерЯчейки*Индекс)
Таким вот образом становица понятно что ни фибоначчи ни stdout тут нипричием
Задам я "НачалоМассива+(РазмерЯчейки*Индекс + [E^Индекс])" - и будет тот же массив, но жуть какой реееедкий.
Или задам "НачалоМассива+(РазмерЯчейки*[10*sin(Индекс)])" - тоже массив выйдет. Даже с бесконечной длиной.
А если слишком строгое определение сделать, массивы с выравниванием не попадут.
А известность длины char* - это уже либо проблемы производительности (хотим ли мы терпеть O(n)?) либо математические (я могу - и значит мне известно). Лично я склоняюсь к первому варианту (практическому), но окончательно от второго не отошёл.
Я правильно понимаю что согласно Вашей точки зрения функцию "strlen" из string.h надо запретить?)))
ps: иногда можно хранить размер для скорости привет, паскаль. Знаете такие сигнатуры (char* str, int len) ?
Нет, не надо запрещать.
> ps: иногда можно хранить размер для скорости привет, паскаль.
Вот как раз надо использовать строки, которые хранят длину (или самим хранить), если длина вычисляется слишком медленно.
> Знаете такие сигнатуры (char* str, int len) ?
Некоторые такие знаю, но в них len - максимальная длина. Хотя, суть понял.
Ну мне кажется что если человек пишет на plain c, то наверное он делает что-то ужасно низкоуровневое и специализированное, и порою может позволить себе не делать безопасных строк. Во всех остальных случаях (начиная от std::string ЕМНП и выше к java, c# и python/perl/ruby) всё и так хранит в себе длину.
1) Они должны быть максимально разными. Скучно когда ты пишешь однообразно.
2) Они должны быть такими, чтоб дух захватывало, а не унылыми.
3) Их должны понимать не многие, а только те, с кем ты совпал. Остальные должны считать их полной чушью.
Давай запретим for и while, как предлагает достопочтимый гость.
А теперь, считай мне, пожалуйста, входные данные со stdin.
>>Причем тут массив неизвестной длины?
Запрещать конечно же ничего не надо) Гость видимо имел ввиду что непонятно зачем использовать for, если есть foreach. Но товарищи выше объяснили уже что ввиду каши из массивов обычных и ассоциативных в PHP оба подхода нужны, так как for+count это гарантия обхода структуры как массива, а не как хеша.
Данные с stdin не имеют отношения к массиву.
Не нужно называть массивом все, по чему можно итерироваться.
Цитировать меня ни к чему, форич может быть применен только к массиву (или объекту, реализовавшему интерфейс итератора), а вот для остального как раз и остались for и while, и их запрещать ну никак нельзя. Даже без банальных счетчиков можно остаться:)
Запретим while, добавим stdin на итераторах, будем гонять форычом по итераторам. В C++ так уже можно.
Или запретим while и оптимизируем хвостовую рекурсию...