23:17

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
[ok]

Решение: при обращении к массивам из функций надо писать &$array, а не $array. Это называется обращением по ссылке. Непонятно, почему так, ну и ладно. Главное разобрались.

upd: В общем, поиск конкретно по теме ссылок дал следующее.
Если функция изменяет входные переменные, то их надо передавать по ссылке, то есть в виде function name(&$var1, &$var2) { ... }.
Если же функция не меняет входные параметры, то можно просто передать данные: function name($var1, $var2) { ... }.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Здравствуйте.

Я тут малясь туплю и уже даже не знаю, что сделать можно.

Есть кусочек кода.

$f = Array();

function sdf($d, $arr)
{
if ($handle = opendir($d))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
array_push($arr, $file);
}
}
closedir($handle);
}
}

sdf('.', $f);
echo count($f);


Теоретически, в выводе я должен получить число элементов в массиве.
Но практически, я наблюдаю ситуацию, что array_push добавляет элементы только когда он находится за пределами функции. Если же внутри, то он как будто вообще не выполняется. Не зависимо от того, как я обращаюсь к массиву, как к глобальной переменной ($f) или как к локальной ($arr).

Прошу помочь, кто знает в чём проблема.
Текст брал отсюда: www.php.su/readdir()

Комментарии
09.04.2014 в 23:42

function sdf($d, &$arr)
10.04.2014 в 00:21

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
Trotil, О, спасибо!

Странно вообще, примеров с обращение по ссылке есть, а конкретно про неё лишь раз говорится и на непонятном примере.

Ладно. Ещё раз спасибо за подсказку! А то намучался уже совсем.
14.04.2014 в 14:35

мне кажется вам стоит рассмотреть альтернативные варианты карьеры. то есть вы быдлокодите на пыхе уже далеко не первый год, но до сих пор не понимаете что такое ссылки и даже области видимости (судя по вашей ремарке о $f), хотя и те и другие являются ну прямо базовыми концепциями языка. сделайте миру одолжение, либо перестаньте быть тупым, либо идите работать в маркетинг, или журналистику, там вам обрадуются.
14.04.2014 в 15:02

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
ehlo_kitty, Ну, вас бы я попросил сделать одолжение и не строить из себя тут крутого гуру, который появляется только чтобы сказать какие все вокруг тупые и бездарные.

Что же до меня, php я не зарабатываю, и занимаюсь им только по одному проекту который сделал в далёкие времена и время от времени просят чего-нибудь докрутить. Так что просто поймите - я php не занимаюсь как основным видом деятельности. Да и как альтернативным тоже. Поэтому вполне понятно, почему я не знаю основ и подобных тонкостей. Просто потому что мне это надо раз в год-два от силы.

Так что давайте вы не будете строить необоснованные выводы и вещать о всяких одолжениях миру с высоты собственной, пардон, невъ**енности?


upd: Всё вышенаписанное также справедливо, если вам просто скучно и некого потроллить.) Как уже говорилось ранее, можете помочь - помогайте, не можете - держите своё мнение при себе.
14.04.2014 в 15:14

несмотря на то, что кое-какой опыт у меня действительно есть, я из себя гуру не строю. ваша некомпетентность не может получить оправдания вне зависимости от структуры вашей занятости и дохода. и скажите на милость, почему я не могу опубликовать своё мнение?
14.04.2014 в 15:24

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
ehlo_kitty, ваша некомпетентность не может получить оправдания вне зависимости от структуры вашей занятости и дохода.

Если так мыслить, то нужно вообще позакрывать все учебные заведения. А как же, там учащиеся что-то делают. И они некомпетентны!
Смешно, не правда ли?

С таким же успехом можно не готовить дома, т.к. я же не повар, я некомпетентен. И даже если у меня неплохо это получается, я не должен это делать, судя по вашему взгляду на вещи.

Если же у меня что-то не получается или получается не так, я спрашиваю у тех кто знает. Это нормально. И почему-то никто не заявляет, что я тупой и мне вообще не стоит к плите подходить, а надо сажать цветочки в парках.


почему я не могу опубликовать своё мнение?

Можете. С этим никто не спорит. Просто не понятен смысл этого. Здесь сообщество для решения возникших вопросов, а не для выражения своего мнения, что все вокруг тупые.



я из себя гуру не строю

И тем не менее, считаете в праве судить об уровне компетентности окружающих и целесообразности их действий.
14.04.2014 в 15:59

позакрывать все учебные заведения
я начал с того что вы как раз не учитесь. нормально задавать такие вопросы первые месяцы неторопливого потыкивания, но несколько лет?

вот вам иллюстрация -- пятиклассник спрашивает: "посоны, а эта, как числа то умножаются?" всем сразу ясно что мальчик тупой, и ему не стоит заниматься точными науками например.

что все вокруг тупые
откуда взялись все вокруг? про всех вокруг я ничего не пишу, речь конкретно про вас.

И тем не менее, считаете в праве судить
э? зачем для этого какое-то отдельное право? кто мне простите запретит?
14.04.2014 в 17:23

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
ehlo_kitty, всем сразу ясно что мальчик тупой

Мальчик тупой только в том случае, если он этому раньше учился. А если он вообще впервые умножение видит, то с какого счастья он тупой-то? Тут уже вопрос к родителям и вообще к ситуации с ребёнком.
Бывают случаи, когда взрослые люди грамоту не знают. И это как бы не мешает им жить и неплохо существовать.



нормально задавать такие вопросы первые месяцы неторопливого потыкивания, но несколько лет?

Если я все эти годы активно использую инструмент, то да. А если я за 4 года обратился к нему от силы раз 7, то в чём проблема?
Или по-вашему, если я хоть с чем-то столкнулся в жизни, я должен стать в этом профи?
Взять к примеру такую радость как UML. Пару раз за жизнь я с ней столкнулся, но он мне не нужен, поэтому я его и не изучаю. Для той задачи, которая была, достаточно было погуглить и задать пару вопросов знающим людям.

Тоже самое с php. Если он мне не нужен, зачем мне его учить? В случае необходимости, я могу поискать нужный вопрос в сети, спросить у знающих людей, решить задачу и спокойно жить без него дальше.

С вашей точки зрения получается, что ради нескольких раз за пару лет, я должен его выучить и, как вы говорите, быть компетентным.
Но зачем мне тратить время на изучение того, что я использую крайне редко, когда я могу потратить это время на то, с чем я сталкиваюсь ежедневно?

Вопросы решаются по мере поступления. Возник вопрос, нашёл решение, сделал.

Если я, допустим, готовлю какое-нибудь блюдо раз в год на праздники, зачем мне знать его историю, особенности взаимодействия ингридиентов и т.д.? Мне достаточно иметь записанный рецепт. Когда мне необходимо, я просто достаю рецепт и делаю по инструкции.
Тут тоже самое.

Так что ваша позиция мне непонятна.
14.04.2014 в 17:43

видите ли, я не то чтобы утверждаю что вы кому-то что-то должны. просто вы "решаете задачи" не имея представления об инструменте, и не имея желания это представление получить. я порицаю такое поведение.

нельзя копипастить чужой код, не разобравшись, как он работает. даже нет, вообще нельзя.
14.04.2014 в 18:20

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
ehlo_kitty, нельзя копипастить чужой код, не разобравшись, как он работает

С этим согласен. Поэтому стараюсь разбираться, чтобы понимать что происходит.


даже нет, вообще нельзя.

А вот после этого начинаются кидания помидорами на тему "нахрена изобретать велосипед".)


просто вы "решаете задачи" не имея представления об инструменте, и не имея желания это представление получить. я порицаю такое поведение.

Я получаю представление о том, что я использую. Уж извините, так сложилось, что с массивами в php я до этого не сталкивался. Так что представление о сабже я получил только сейчас.

Это аналогично вождению автомобиля. Мне надо водить - я выучил правила, получил права. Но пока мне не понадобится, изучать внутренее устройство автомобиля мне не обязательно, т.к. я с ним не сталкиваюсь.

Точно также я использую компьютер для работы, просмотра фильмов, поиска инфы в сети и т.д., но не знаю тонкостей устройства его компонентов. Какие чипы используются, для чего, как устроена распиновка контактов на планках памяти и т.д. Я с этим не сталкиваюсь, поэтому оно мне не нужно.
Будет нужно - изучу и физическое, и логическое устройство в подробностях. А пока что мне хватает знаний что, куда и в каком порядке подключается, чтобы всё вместе оно правильно работало и функциорировало.)
14.04.2014 в 18:42

внимание, правильные аналогии:

"Уж извините, так сложилось, что со сцеплением я до этого не сталкивался. Так что представление о сабже я получил только сейчас."

"Где находится пробел, для чего он нужен, как устроено контекстное меню и т.д. Я с этим не сталкиваюсь, поэтому оно мне не нужно."

ещё раз, вам никто не запрещает быть безграмотным и нелюбопытным, просто, ну, это плохо.
14.04.2014 в 19:09

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
ehlo_kitty, Ну если действительно не было нужны использовать массивы. Или надо было сидеть и заучивать подряд все типы/структуры данных?


"Где находится пробел, для чего он нужен, как устроено контекстное меню и т.д. Я с этим не сталкиваюсь, поэтому оно мне не нужно."

До определённого момента я не знал про горячие клавиши. Но я прекрасно обходился без них. Сейчас я их активно использую, т.к. в какой-то момент столкнулся с ними и попробовал.
14.04.2014 в 19:24

вот дались вам эти массивы а. я понимаю что зачёркнуто, но судя по всему вы продолжаете считать, что

при обращении к массивам из функций надо писать &$array, а не $array. Это называется обращением по ссылке

THIS IS WRONG ON SO MANY LEVELS

я сказал всё что хотел. на всякий случай вот вам резюме ещё раз:

1. отказ изучить рабочий инструмент хотя бы на базовом уровне является симптомом разнообразных отрицательных свойств личности;
2. я считаю что вам стоит перестать пользоваться этим инструментом, раз уж изучать его вы отказываетесь.

ещё короче: если вы не программист, перестаньте писать программы.
14.04.2014 в 19:45

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
ehlo_kitty, С таким же успехом вы можете посоветовать нанять плотника, когда надо пару досок распилить. Или повара, когда надо сварить макароны.

Если ничего не делать, то ничему и не научишься. С вашим взглядом на мир, можно вообще не рождаться. Лишь бы не сделать что не так.

Как обычно. Много своего мнения, ноль по сабжу. У вас это характерно проявляется и уже далеко не в первый раз.
Я бы посоветовал вам подумать над этим, но вам всё равно бесполезно что-либо объяснять. Так что просто закончу разговор. До свидания.
14.04.2014 в 20:48

Так что просто поймите - я php не занимаюсь как основным видом деятельности.

Понятия ссылок и областей видимости характерны для многих языков программирования.
А вы какой-нибудь язык программирования хорошо знаете?
14.04.2014 в 22:20

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
Trotil, Понятия ссылок и областей видимости характерны для многих языков программирования.

Это да. Но не все строго требуют обращение по указателю.)


А вы какой-нибудь язык программирования хорошо знаете?

Если честно, не могу сказать что знаю что-то хорошо. Я не настолько самоуверен.)


А по работе в основном приходится использовать синтаксис js. Но это синтаксис, а не сам язык, так что многие вещи к web'овском js не подходят.
Ну асм порой использую. Не часто, но бывает.

Так что да, не могу сказать что что-то знаю хорошо. Ибо что в одном направлении, что в другом - ещё очень много неизвестного. Даже из диапазона базового.
Так что исхожу из задач. Если возникает проблема при реализации чего-нибудь, лезу искать как её решить, ищу обходные пути. Так и учусь.