[Powered by Google Translate] [Часть 8] [менее комфортно] [Nate Хардисон] [Harvard University] [Это CS50.] [CS50.TV] Добро пожаловать в наш второй к последнему разделу. На этой неделе мы собираемся поговорить о PHP, а затем на следующей неделе мы сделаем небольшой обзор на вопросы 1. Мы собираемся начать на стр. 3 Проблема устанавливает обновления, и мы будем работать через раздел вопросов довольно быстро. На странице 3, мы начинаем говорить об этом разница между C и PHP В том смысле, что PHP является динамически типизированный язык, в то время как C статически типизированных, и кто-то действительно быстро сделать любое кодирование в нечто вроде PHP или Python или Ruby, прежде, JavaScript? Полностью новое? Хорошо. Все эти языки, которые я только что упомянул очень отличается от языков, таких как C и C + + и Java В том смысле, что, когда вы объявляете переменную вы не обязаны декларировать какая переменная это, так и в C мы застряли того, чтобы всегда говорить это будет целое число переменных, или это будет символ переменной *, тогда как PHP, Python с, с Ruby, с большим количеством этих более современных языков, вы не должны делать этого вообще. Вы просто объявить переменную, а в случае PHP Вы заявляете, что это переменная, предварив его знаком $, , а затем тип переменной определяется то значение, он держит, которая круто. Чтобы поиграть с этим немного, у нас есть пример кода PHP прямо здесь между начальным и конечным тегами. Мы используем такие как HTML, в том смысле, что Мы получили эти угловые скобки здесь, чтобы открыть и закрыть. Вы увидите это с HTML. Вы увидите такой же синтаксис XML тоже. Это указывает на начало блока PHP. Это? PHP является специфическим для PHP. Мы закрываем все с>, а также. Давайте открывать файлы в нашем устройство с помощью все, что вы хотите. В этом пакете он говорит позвонить dynamic.php. По правде говоря, это можно назвать все, что вы хотели, но имя файла будет придумать и будет важно в дальнейшем, так что просто помните, что вы это называете. Я собираюсь перейти на прибор, и я собираюсь сделать каталог Раздел 9 Я считаю, что мы находимся в настоящее время. И мы пойдем в разделе 9, и я собираюсь использовать Gedit. Давайте посмотрим, Gedit, и я буду называть моим dynamic.php. Boom. В dynamic.php, так как это PHP файл и я хочу, чтобы запустить эту через переводчика PHP Мне нужно, чтобы начать все с теми, с открытыми тегами, так что я собираюсь начать тех, кто сразу же, дать себе немного пространства между тегами , а затем Цель этого упражнения было играть с эта функция называется GetType, так GetType, эта функция прямо здесь. Обратите внимание, что нет никакого подчеркивания или пробел или дефис или что-то в этом роде отделения 2 слова, получения и ввести, только одно слово в целом. Но то, что это будет делать, если я передаю в переменную GetType, скажем, $ VAR или $ х, это скажет мне, отчасти в отладке формате что имя этого типа. Мы собираемся экспериментировать здесь. В частности, если вы посмотрите на спецификации PSET у нас есть несколько различных строк кода. В первой строке кода мы инициализируем эту переменную $ Var, равным 7, а то у нас эта линия Printf , что говорит эй, Printf VAR пустой. Printf является одним из многих способов, мы можем напечатать вещи в PHP. Часто вы увидите эхо-функция используется вместо Printf, Printf, но мы все знакомы с будучи кодирования в C на некоторое время. Что вы можете сделать, давайте посмотрим, если копирование и вставка работ. Я собираюсь дать это попробовать. Мы вернемся к приборе. Хорошо, и мы идем. И расстояние немного напуганный, но здесь мы идем. У нас есть этот код здесь. [Студент] Разве это не хороший стиль на вкладке это? Простите? [Студент] Это обычные вкладки в этом? Право, таким образом, Сэм просит, если это конвенция о закладке этого или нет. Обычно да. В данном случае я выбрал не делать этого. Честно говоря, вы увидите разные вещи между различными программистами. PHP обычно используется часто в сочетании с HTML и других языках, и поэтому иногда печать будет выглядеть немного напуганной Если вы отступа в пределах PHP начальный и конечный теги. Это действительно зависит. В этом случае копирования и вставки не вставить вкладки для меня, но это определенно делает, как вы сказали, чтобы было понятнее. Хорошо, если вы сохраните этот код в dynamic.php то, что вы можете сделать, это спуститься в окно терминала, где я нахожусь здесь В Gedit, и сделать эквивалент компиляции использование сделать и затем запустить свой код в C Все что вам нужно сделать с файлом PHP является запуск интерпретатора PHP, который немного программе под названием PHP, и аргументы вы даете переводчик файла, который вы хотите интерпретировать. В этом случае, dynamic.php. Ой, где же я это сказать? О, я положил его в раздел 9, и вот я здесь. Вот почему. Теперь, если я бегу, что снова Мы видим, что в моем первом вызове функции GetType VAR является целым числом. В следующем VAR является строка, а затем и в третий VAR является логическое значение. Что интересно об этом, если мы прокручиваем обратно мы видим, что Эти типы похожи на те, которые мы имели в C. У нас было целых чисел в C. Мы вроде были строки в C, поэтому строки не были полностью законными типа в том смысле, что наши CS50 строки было действительно, что? Простите? Мисси? [Missy] Char *. Да, именно это символ * мы использовали. В самом начале семестра мы использовали строку типа, но это было действительно символ * под капотом. Мы просто тип, определенный его, в то время как в PHP этих строк фактического типа. Там нет больше этого символ вещи типа *. Вы увидите, что мы можем сделать еще много вещей со строками гораздо легче, чем в PHP мы могли бы в C, и, наконец, у нас есть этот логический тип, и большая разница в том, что если прокрутить вниз мы видим, что названия этих типов В настоящее время число, строка и логическое вместо Int и логический, и как вы поднимаете различных языках программирования, при условии, что в какой-то момент в вашей жизни вы будете вступать в контакт с различные те, что вы увидите маленькие причуды, как это где C называет целых чисел целыми. Некоторые называют это целые числа. Есть и другие условия, которые вы будете работать в. Большой Int мы видели сегодня в SQL. Есть также номера, а затем логический, логический, всякие различия существуют. Это не очень интересный, но теперь я собираюсь дать вам немного времени если масштаб вне работать через это упражнение в нижней части страницы 3 , где он спрашивает, какие типы соответствуют этим значениям здесь, внизу. Мы имеем 3,50. У нас есть эта вещь прямо здесь, что интересно. Мы не видели этого раньше, хотя, если вы следили вместе в лекции Вы, вероятно, уже знаете, что это такое. Тогда у нас есть это, что это вид в стиле фанк. Вы признаете это. Что это в C? Сэм? Что это дает Вам в C? Было бы открыть файл с именем dynamic.php и сделать его читабельным. Да, и какой бы тип переменной, которую мы хотели бы присвоить это? Звездой файла. >> Именно так, мы бы присвоить этому в файле звезды. Это законно PHP тоже. Выполнить это. Посмотрите, что происходит, когда вы проходите, что в GetType. А потом также проверить, что нулевые есть, что бы это могло быть в PHP. Я дам вам несколько минут. Вы можете буквально скопировать и вставить эти значения в, и тогда мы будем делать немного случайных вызовов на вас и посмотрите, что вы получили. [Студент] У меня есть вопрос. << Да. В одной из лекций Давид сказал, что есть что-то, что вы можете поставить в начало файла так что вам не придется вводить в PHP каждый раз. Что это было? Он, вероятно, говорить о фунт взрыва, хэш взрыва. Это директива, что если вы пометить файл как исполняемый то, что он делает, когда вы запустите файл она расскажет программа-оболочка использовать PHP интерпретатор для интерпретации содержимого файла. Вопрос заключается в том, что это за специальная линия что мы могли бы включать в верхней части наших PHP файлы не должны включать эта линия PHP или эта команда PHP всякий раз, когда мы хотим запустить файл? И вы можете сделать это с кучей разных файлов. Я считаю, это зависит от того, где бинарный PHP хранится, но часто USR / бен / PHP является хорошим местом для начала. Вы можете выяснить это точно, возвращаясь до вашего прибора и набрав из которых PHP. Какая команда выясняет, когда вы выполнения двоичного или команду, где соответствующий файл. Это говорит мне о том, что PHP на самом деле сглаживания это двоичный файл , которые хранятся в USR / BIN, который является, где многие системные файлы будут установлены. Например, если я прокрутки вверх к вершине, теперь, когда я положил эту #! линия здесь Я могу прокрутить вниз, и я могу попробовать запустить dynamic.php, но я получаю эту ошибку о разрешении было отказано, и что это означает, что этот файл в настоящее время не давая исполняемый разрешения. Это не помечен как файл, что кто-то может работать. Когда вы запускали сделать или Clang, и вы получили из него исполняемого файла компилятор был достаточно умен, чтобы знать, что эй, я строю исполняемый файл. Вы, наверное, хотите, чтобы выполнить его, поэтому он будет автоматически настроить Разрешения для вас. Это не так, хотя, когда вы создаете обычный файл с нуля, Причина в том Обычно вы не хотите, чтобы любой файл в вашей системе быть исполняемым, так что вам на самом деле нужно пойти и сделать это вручную. Самый простой способ сделать это с помощью команды CHMOD, и CHMOD + х говорится добавить исполняемый бит потому что чтение бита, бит записи и исполняемый бит, R, W и X, и говорят CHMOD + х будет включать исполняемый бит за то файл, который мы указываем, что в этом случае будет dynamic.php. [Студент], что включен для всех? Давайте проверим это, так как я бы проверить разрешения? Вы знаете, как я хотел проверить, прав доступа к файлу? [Неразборчиво ответ студента] Извините? >> [Студент] XSD. XSD дает нам файл в хаки. Список всех файлов,-л, покажет мне все файлы в моем каталоге вида в длинных, подробных каталоге, и вот мы видим, что это dynamic.php файл Последнее изменение 5 ноября в 4:21 PM. Владелец этого файла jharvard. Это пользователь, который зашли Вот пользователем я работаю, и если вы тоже в приборе Вы также работает как пользователь jharvard. Вы находитесь в группе студентов, и эти вещи, которые вы увидите достаточно часто. Мы можем пойти на многие подробности, но по большей части то, что вы хотите посмотреть на то, когда вы ищете, чтобы посмотреть или нет файл является исполняемым, прежде всего, Пользователь, который является владельцем файла, владельцем, так что это jharvard, и тогда мы имеем Разрешения биты здесь слева, и способ, чтобы прочитать это в том, что последний бит Обычно используется для обозначения того или нет, по крайней мере, в этом случае Этот последний часто будет установлен в объявлении, чтобы указать, о том, что файл является каталогом, а не просто обычный файл. Тогда следующие 3 бита прямо здесь определить права доступа, что владелец файла имеет, поэтому в данном случае jharvard, как владелец файла, может читать и писать этот файл, но есть черта говорят, что jharvard не может выполнить этот файл. Следующие 3 бита для группы, так что это студенты группы, так что если бы не было нескольких пользователей на мой прибор, и у нас было несколько пользователей в рамках группы студентов, Затем все они могут читать этот файл, но они не могут писать, и также никому в мире может только читать данный файл, а также. Там хорошие, длинные рецензии об этом, так что вы можете прочитать в Интернете. В спецификации поставленной задачи мы останавливаться на этом более подробно. [Студент] есть 218 со ссылкой на мир? 218-с верхней части моей головы я забыл, но нет. Давайте посмотрим. Я заглушки на этом прямо сейчас. Вернуться к тому, что мы собирались делать с этой CHMOD + х , где мы хотели дать dynamic.php разрешения исполняемый и вопрос был ли это даст исполняемый разрешения на все или просто jharvard, и мы можем убедиться в этом, запуск команд и вводить LS-л, и теперь мы видим, что он помечен как исполняемый файл. Вы видите, что было изменение цвета. Теперь dynamic.php указаны в зеленый, и, похоже, ответ на вопрос, что, Шарлотта? [Charlotte] Только jharvard. >> Только jharvard, да. Если мы хотим, чтобы включить выполняемый бит для всех как мы могли бы это сделать? Любые мысли? >> + Х? Да, именно так. Шарлотта сказала, что мы можем сделать из CHMOD + х dynamic.php, и теперь, если мы запустим LS-L мы видим, что исполняемый бит действительно включен для всех. И вы реально можете сделать обратное, так что вы можете отключить его для всех использование минус. Теперь он выключен, и теперь мы можем включить его обратно для jharvard так что мы действительно можем запустить его сейчас, и теперь вы видите, когда мы запустим код этого специального #! линия в верхней части, #! линии, сообщил оболочки, сказали, что наш терминал эй, когда этот файл запускается, использовать / USR / бен / PHP для интерпретации этот файл , а затем распечатать на выходе. [Неразборчиво вопрос студента] Конечно, дайте мне прокрутить обратно. Так же, как это. Вы увидите все эти директивы начинаются с этой фунт, а затем восклицательный знак, иногда называют притон, хэш взрыва. [Студент] Как мы можем запустить его с dynamic.php PHP, прежде чем сделать его исполняемым? Вопрос в том, как мы можем выполнить это с помощью двоичного PHP в то время как dynamic.php не является исполняемым? Это супер важно, потому что это точно, как он будет работать, когда вы пишете проблема набора 7. Большую часть времени файлы PHP не являются непосредственно исполняемый файл. Таким образом, что работает, потому что это бинарный PHP, что это исполняемый файл. Переводчика вещь, которая выполняется, и так, что он делает буквально прихлебывая во всем содержимым наши dynamic.php файл и собирается строка за строкой и выполнение этих команд, так что, используя наши PHP-файл в виде списка инструкций. Это не непосредственно его выполнения. Вот где мы говорим, что эти файлы интерпретируются во время выполнения. Это перспективе языке времени, а не что-то, что определяется во время компиляции, Не компилируемый язык, как C. Есть ли способ, чтобы получить языка во время выполнения действовать, как будто это язык, время компиляции, Например, если вы все сделали ход на сервере а чем вы знаете, что я имею в виду? Да, так что вопрос есть ли способ, чтобы запустить языках Время действовать больше как компиляция типов Время языках? И там, я имею в виду, что активная область исследования для многих из этих компаний. Я считаю, Facebook сделал очень много работы с PHP и составление его вниз, что делает его быстрее, оптимизируя его так как их сайт будет построен на PHP. Если вы следили за node.js на всех, которая является своеобразной переводчика JavaScript чтобы быть в состоянии запустить JavaScript вне браузера, за пределами вашего веб-браузера, потому что традиционно JavaScript бы просто запустить внутрь Firefox или Chrome, и он будет использоваться, чтобы сделать анимацию случилось на веб-странице и сделать ваши веб-страницы динамичными. Это был построен на много работы, что Google сделала чтобы JavaScript и C + + связываются вместе, так что есть много активных исследований получить эти языки, чтобы взаимодействовать и оптимизировать их, в первую очередь потому, что многие люди могут кода в PHP и JavaScript потому что это намного проще. Это намного приятнее. У вас нет указателей. Вы не должны типов плавающих вокруг. Они хотели, чтобы получить преимущества этих компиляции языках времени все проверки типа и скорости и нижней памяти, и все, что сохраняя при этом гибкость и простоту использования этих новых. Вернемся к нашему первоначальному плану атаки. У нас есть несколько из этих вопросов здесь, в нашей спецификации поставленной задачи. Давайте пройдемся по ним очень быстро, и мы пойдем по комнате. Шарлотта, какой тип 3,50? [Charlotte] Это в два раза. >> Это в два раза. Джимми, что это следующий? >> Массива. Массив, удивительный, и Джаред, что Еореп? [Джаред] Это ресурс. >> Это ресурс. Это своего рода новое, а не файл звезда, а не файл. Это ресурс типа PHP, и мне жаль, Элла, последний нулевые есть что? Null. Null, как это прописано в PHP? >> Таким же образом. Точно так же, капиталов? >> Да. Да, все в порядке. Здесь мы идем, мы получили двойной, у нас есть массив, у нас есть ресурс, а затем мы получили нулевой. Давайте посмотрим теперь вы видели- Давайте посмотрим, так что теперь я думаю, что я хочу сделать, это подтянуть этой веб-страницы прямо здесь, это php.net / ручной, так что если вы, ребята, скопировать, что и открывать веб-браузер. Я хочу, чтобы подтянуть Chrome, положить, что дюйма Я хочу показать вам, что это не только потому, что мы можем говорить весь день о типах и все, что весело вещи а потому, что это руководство PHP, и есть много PHP программистов там. Есть много сайтов PHP там, и, как результат, есть много документации по PHP, и руководства, это php.net, является действительно хорошим местом, чтобы пойти всякий раз, когда у вас возникли вопросы о том, что лучший способ сделать X в PHP или что функция выглядит? Просто вид знакомство с тем, что это выглядит так Вы будете приходить сюда часто, немного для задачи установлен 7. Если вы в конечном итоге делает окончательный проект, который использует PHP это будет место, вы станете очень хорошо знакомы. Часто, как люди делают это они используют Google для поиска на сайте, и они не используют в окне поиска, вот здесь, в правом верхнем углу, которая является своеобразной крошечные. Если вы погуглить вокруг что-то делать с PHP, и вы увидите одна из эксплуатации ссылки всплывают обычно можно рассчитывать, что как достаточно хороший ресурс. Awesome, так из этих типов, просто из любопытства, какие из них мы не видели? Все, что мы еще не видели здесь? [Студент] ресурс. >> Мы видели ресурс с Еореп вызова. [Студент] Objects. >> Объекты мы не видели наверняка. Обратные вызовы мы не видели. Есть некоторые из этих псевдо-типов. Мы определенно видели только целыми и двойными. Мы не видели некоторые другие, так что если мы нажмем на целых мы видим, есть ли другие целые числа, что они здесь? Являются ли они все так целое число, число, целое число. Некоторые языки имеют большие целые типы, как мы видели на MySQL сегодня был Int, а затем большая Int. Cool. Так, PHP руководства. Давайте вернемся к нашей спецификации поставленной задачи, и мы теперь прокрутите вниз до стр. 4. Одна из вещей, что происходит, когда вы получите эти языки , которые не имеют этой статической типизации, так что эти языки, где вы должны объявить Тип передней до переменную это вы получаете случае, если вы начинаете с переменными различных типов взаимодействующих друг с другом, и PHP делает это вещь, где он пытается сделать то, что он считает самым разумным, что нужно сделать когда у вас есть 2 различных типов взаимодействуют друг с другом. Например, если мы посмотрим на эти строки кода прямо здесь Вы видите, что мы получили то, что происходит, когда мы пытаемся добавить строку 1 до целого числа 2. Что произойдет, если мы будем пытаться добавить строку, которая не является числовым значением , а фактические символы, CS числа 50? Тогда мы увидим, есть ли что-нибудь другое, что происходит, когда вместо добавления строки в число мы добавляем число в строку, и так далее, и так далее до точки, где мы получаем какие-то странные вещи прямо здесь, где мы получили 7 + правда. Какого черта это значит? Если вы, ребята, идти вперед и вставьте часть этого кода в вашем приборе. Вы можете держать его в dynamic.php. Мы увидим, что произойдет. [Студент] Просто используйте печать, не Printf? Да, и вы увидите, что печать является также действительным функция для печати в PHP. Есть много различных способов сделать это. Мы увидим, с парой примеров позже, как только мы начинаем говорить об уникальных проблема, которую мы собираемся написать , а затем концентрация проблема, которую мы собираемся написать , что, хотя у нас есть Еореп и Fclose это зачастую не самый простой способ читать в содержимое файла. PHP имеет много таких, как C-пережитки. [Студент] Когда я ставлю во всех 6 из тех вещей, которые я только один номер как выход. [Nate H.] Когда вы помещаете во всех 6 из этих вещей. Давайте посмотрим, это потому, что это, возможно- одно то, что эти печати звонки не прекращаются в конце с новой строки. Там нет новой линии, разделяющей каждой из этих печати звонков, так что, возможно, вы получаете одно большое число, и это действительно просто смесь символов новой строки. [Студент] Ну, как я могу убедиться, что- Ну, есть куча разных способов. Вы можете вручную поставить в печать символ новой строки, эхо символ новой строки, Печать на новой строке. [Студент] Так эхо то же самое, Printf? Printf, как C Printf где вы печатаете отформатированную строку. Вы снабжая его формат строки, а затем все переменные заполнителя. Очень часто то, что не использовал- Давайте посмотрим, как отказ, Я меньше знакомы с PHP, чем я с других языков веб- а когда я запрограммирован в PHP я обычно не использую Printf потому что я считаю это быстрее, чтобы использовать возможности строку интерполяции, что он имеет, который мы пойдем в и я покажу вам всего секунду, , тогда как в C мы как-то должны сделать это Hacky вещь, чтобы получить его, чтобы печать должным образом. Вы действительно можете положить переменных непосредственно в строки в PHP. Printf это своего рода слишком длинный для того, что я обычно делаю. Да, Элла. [Элла] Вообще, если вы получаете ошибки разбора это значит- как на C он не скажет вам точно, где ошибка и что это такое, Означает ли это взгляд через весь ваш код и понять это? Это обычно более целенаправленно, чем это. Я думаю, что в этом случае было немного, так что я думаю, что в этом случае нам не хватало запятой. Он пытался осмыслить все, так как эти интерпретируемых языков, переводчик будет пытаться и делать все возможное, чтобы заставить все работать должным образом. Вы увидите, например, в JavaScript Вы будете часто-лайн заявления заканчиваются точкой с запятой так же, как в PHP, так же, как в C. В JavaScript некоторые интерпретаторы JavaScript во многих браузерах будет положить в точку с запятой для вас если вам случится быть пропущены них. Они пытаются приспособить для некоторой небрежности с вашей стороны. Вот где можно было бы пробовать и пробовать и пытаться, чтобы все заработало, и, наконец, она будет добраться до точки, где он говорит хорошо, Я не могу сделать все это работает на спасение, а вот где вы получите номер строки , что может показаться немного не от точного места. Итак, давайте пройдемся по этому очень быстро. Мы остановились с Эллой, так что давайте перейдем к Мисси, и Мисси, что делает печать строка 1 плюс номер 2 вам даст? [Missy] 3. >> 3. Имеет ли это смысл? Вроде того? Дает ли это вам номер? Дает ли это вам строки? [Missy] число. >> Это число. Но это распечатав его, так что он собирается дать вам какую-то строку. Единственное, что мы можем сделать, чтобы проверить это , если мы делаем $ переменная = 1 + 2 а то говорят, эхо GetType, поэтому мы используем третий вид печати здесь. Теперь мы видим, что здесь происходит. Вот что у нас получилось, что мы получили целое число из этого. Хотя мы были добавив эту строку в число, мы не получим строку из него, так же, как Missy сказала. Мы получали целое. Итак, давайте посмотрим, следующий до, Кевин. CS + 50? >> [Кевин] 50. [Nate H.] 50. Имеет ли это смысл? [Кевин] Да. [Nate H.] Почему? Почему это имеет смысл для вас? [Кевин] Потому что только имея строки, имеющие нулевой числовое значение. Да, отлично. Вид неоднозначных ситуациях, но это хорошо, чтобы знать, что происходит. Stella, что произойдет дальше с номером 1 + строка 2? [Stella] 3. >> 3 раз. И в этом случае, мы можем получить строку или число? Давайте дадим этому попытку. Никто быстрее, чем мне получить ответ? Шарлотта? О, я didn't-ладно, давайте посмотрим, что мы собираемся сделать нечто подобное где у нас есть число и строка, и мы собираемся повторить типа, посмотрим, что мы получаем. Мы также получаем целое число. Это не имеет значения, какой из них строки, которое является числом. Мы все еще собираемся, чтобы получить целое число. Он по-прежнему собирается сделать то, что мы могли бы ожидать. Ладно, Сэм, что около 90 + 9 бутылок пива на стене? [Сэм] 99. >> 99. Нет бутылок пива на стене, однако. Это дает нам немного больше информации о том, что происходит. [Сэм] Если вы написали 9 в буквы тогда вам нужно будет 90, не так ли? [Nate H.] Да. Вопрос был, если бы мы записано 9, как N-I-N-E бы мы получили 99 или 90? Мы получаем 90. Это буквально ищет цифровых символов. Это не достаточно умен, чтобы признать число слов и вещей. Да. [Студент] Есть такая вещь, как приведение в PHP? Существует, и это именно так, как вы могли бы сделать это в C. Как насчет 10/7, Шарлотта? [Charlotte] 1,4285. [Nate H.] Да, так что же может быть удивительного? Что случится, если вы сделали это такая же вещь в C, если вы сделали 10/7 в C? [Charlotte] Было бы только дать вам, в зависимости от того, как я предполагаю, typecasted это даст вам лишь ограниченное число цифр после запятой. Да, так ограниченное количество цифр после запятой. Что еще может быть, что это дает вам никаких цифр после запятой? Часто нет, так что снова, в зависимости от того, как вы его типажей он может или не может преобразовать его в число с плавающей точкой. Вот это было довольно приятно, что он и сделал. Если бы мы показали вам это назад, когда мы начали делать такого рода вещи в C он, вероятно, сделал бы немного больше смысла что он не просто пойти к 1. И, наконец, Джейми, как насчет 7 + правда? [Jamie] 8. >> 8. Что это значит? Я думаю, он просто дает истинное значение 1. Да. Что произойдет, если мы изменим, что ложно? [Студент] 7. Да, и помните, где мы говорим об этих двоичных значений, 1 являющийся на, 0 означает выключение? Теперь у нас есть истинные 1, 0 является ложным, и вы не могли видеть это на примерах C, что мы сделали это в прошлом семестре, но исторически BOOL типа C не было реального типа, так люди использовали 0 и 1 на место истинного и ложного. Это и есть проявление этого. Итак, одна важная часть обо всем этом является то, что у нас есть эти разные типы. Они могут взаимодействовать друг с другом. Они часто могут взаимодействовать друг с другом таким образом, что хорошие, как мы видели здесь. Приятно быть в состоянии иметь строку 1 и № 2, сложите их вместе и получить 3. Это имеет смысл. Однако, когда вы пишете веб-сайтов, и особенно, когда вы обрабатываете ввод пользователя, так сказать, вы написали веб-форму , которая собирает информацию от пользователя, а затем переходит на ее обработку на заднем конце, на стороне сервера в коде PHP если вы ожидаете, что значение, которое пользователь вводит в и представлен в форму, чтобы быть целое число или число с плавающей точкой или что-то вроде того Вы должны явно привести его , а затем сделать некоторые проверки типов. Вы же не хотите, чтобы полагаться только на этой системе жонглирование типа, чтобы все получилось, Особенно по соображениям безопасности и просто для надежности вашего сайта. Просто что-то иметь в виду, что всякий раз, когда вы обработки данных формы, все, что происходит в пост или Get суперглобальных Убедитесь, что вы всегда проверить его и преобразовать его и приведение его. И так же, как мы говорим о минуту назад, что типажей В PHP точно так же, как и в C, где у вас есть скобки а потом типа. Имейте это в виду. Одна функция, которая пригодится, когда вы делаете это это мы использовали и это вроде как в сторону- мы используем эту функцию GetType прямо здесь , чтобы выяснить тип переменной, и, хотя это удобно для отладки и посмотреть, что тип переменной является Вы не хотите использовать это, например, в условиях, когда Вы проверяете ли GetType в $ переменная = целое что-то делать. Это плохо, плохо, плохо. Вместо этого есть эти функции называют это целое число, строка, является массив, который вы хотите использовать вместо этого, поэтому в данном случае то, что я хотел бы сделать вместо этого парня прямо здесь это использовать это целое обл. И они часто называют это is_ * в том смысле, что вы могли бы заменить * с целым, строка, и так далее, и просто чтобы убедиться, действительно быстро Является ли это Int PHP. Похоже, что Вы можете сделать это либо Int или есть целое, а? Да, псевдоним, так Int целое псевдонимы. Cool. Как мы это делаем? Давайте поднять темпы немного. Теперь мы собираемся говорить о массивах, так как вы можете видеть В следующей части спектра мы говорим о том, как массивы в PHP немного отличается, чем в C. По правде говоря, они вроде амальгамы массивов, что вы пришли к знаем и любим в C где все того же типа храниться последовательно и непрерывно в памяти, и у вас есть эти числовые индексы. У вас есть индекс 0, индекс 1, индекс 2, и хранить значения на этих индексов. Вы также C, когда вы писали Speller, что многие из вас сделал хэш-таблице подход, и вы видели, что у нас было различные виды хранения, где мы были отображение Ключ к значению, поэтому, когда вы старались хранить что-то в хэш-таблице Вы должны были указать, что вы хотите сохранить его с определенным ключом, и что ключевые определяется местоположение значения и где он будет храниться. Ты вроде есть оба эти понятия происходит в то же время в массив PHP, и, как результат, мы часто называем эти ассоциативные массивы где мы связывая введите значение. В следующей части мы поговорим о простой массив PHP где у нас есть клавиши A, B, и C, Все строки, сопоставление с числами 1, 2 и 3. И вы можете иметь ключи разных типов. Вы можете иметь несколько ключей, которые являются строки, некоторые ключи, которые являются целыми числами. Вы можете иметь значения различных типов. Вы можете иметь значение, которое строки, значения это число, значение, которое объект или другой массив, например, все в том же массиве объектов, который является немного странно. Вы не должны иметь массив, который только что получил один тип элемента в нем. Вы можете иметь много разных вещей там происходит. Кроме того, необходимо отметить, что, когда вы видите что-то вроде этого в коде, который действует PHP объявить массив как это, 0, 1, 2, 3, 4, 5, , что объявят инициализируется $ обр, чтобы быть в этом массиве. Но то, что вы фактически получаете под капотом такой неявной генерация ключей, где мы получили с 0 по 0, 1 до 1, 2 на 2, 3 на 3. И получается, что даже если у вас есть массив, как этот парень здесь где у вас есть, б и в качестве ключей а затем вы начинаете использовать метод массива толчок, чтобы начать использовать этот массив, как стек, так что вы можете видеть, что этот объект массива, этот массив действительно перегружен. Мы можем использовать его как массив. Мы можем использовать его в хэш-таблице. Мы можем использовать его в качестве стека. Когда вы начинаете нажав вещи на этом массиве Первое, что вы нажимаете на это будет индекс 0, а затем индекс 1, а индекс 2. Вы можете получить такой неявной генерации ключей если не указать их явно. То, как вы явно указать ключи, конечно же, с помощью этой скобок, который похож на массивах, за исключением, а не только позволяет целочисленных индексов здесь, сейчас мы позволим ничего. Если вы хотите, чтобы ваш ключ должен быть строкой, Вы должны определить это так. Если вы хотите, чтобы это было целое число, необходимо указать его с внутр вы хотите использовать. Вопросы, на которые до сих пор? Одна из хороших вещей об этой идее что вы можете только когда-либо одно значение хранится с определенным ключом. Если мы вернемся к нашим прибором, позвольте мне удалить некоторые из этих вещей. И давайте говорить, что я инициализировать массив 0, 1, 2, сделано. Если я теперь знаю, что, например, если я Эхо $ Arr [0] Я хочу, чтобы получить значение 0 распечатаны, и так как может быть как никогда одно значение храниться в течение определенного ключа если бы я хранить что-то на $ обр [0], скажем, Затем я знаю, когда я повторяю $ обр [0], Я не собираюсь получить 0 распечатаны, как раньше. Я только собираюсь. Так что это в основном говорят, что я не могу иметь $ обр [0] Хранение 2 разных значения. Она не может храниться как 0, так и строкой, как это буквально заменяет что было на $ обр [0] ранее. Поэтому я об этом до запуска его, посмотреть, что происходит. Смотрите здесь, что я получил 0 распечатать, а затем сюда. Там нет новых линий, потому что я был ленив и не положить, что дюйма Что я люблю этого мы можем использовать это как способ , чтобы захватить эту идею набор где мы не можем иметь несколько ключей в массиве. Мы не можем иметь одинаковые ключи в массиве. Я не могу иметь клавишу 0 и значение 1 и ключевым значением 0 и или ключевым 0 и значение ИСТИНА. Клавиши все есть только 1 ключ в массиве. Даже если вы можете иметь то же значение, хранящееся несколько раз в массиве под разными ключами это не возможно иметь одинаковые ключи несколько раз в вашем PHP массива. Если мы посмотрим на это следующая проблема, unique.php, где мы хотим открыть файл PHP , содержащий список строк, одна строка на линию, и мы хотим, чтобы найти все уникальные строки в файле все, что нам нужно сделать, это использовать один из этих массивах PHP и с помощью строки в файле ключей к этому массиву и постоянно обновлять наш массив как мы храним эти новые ключи. Как мы читаем каждую строку из файла мы можем хранить их в массив, и в конце мы будем иметь, как наши ключи в массиве все уникальные строки в файле. Имеет ли это смысл? Давайте посмотрим, как это работает. Мы собираемся открыть, в соответствии со спецификацией, новый файл с именем unique.php. Открыть. Ой, извините, новый файл. Мы собираемся начать его с тем же начальным и конечным тегами. Мы собираемся сохранить его в разделе 9, и мы будем называть его unique.php. Хорошо, теперь масштаб изображения Идея здесь состоит открыть файл, читать в файл строка за строкой. Для каждой строки в файле мы будем иметь массив, где у нас есть  линии, как наш ключ. А потом, когда мы дойдем до конца здесь Клавиши $ обр являются уникальными линиями из файла, поскольку мы знаем, что если я ставлю линию в этом массиве несколько раз он просто будет держать переопределения старое значение, и мы можем на самом деле положить линейного массива в качестве самой просто так. Это немного странно. Мы хранение и тот же ключ пары значений снова и снова, и снова, но так как мы гарантированы, что будет только 1 ключ называется линией так что если у нас есть файл, который говорит-файл звуков животных и имеет гав, гав, Мяу, мяу, му, му, и каждый раз мы читали животного шум как утка, и мы храним его в нашем массиве мы получаем гав, а затем во второй раз мы храним гав он перепишет в первый раз, что мы сохранили его. В конце концов мы будем иметь только один элемент массива для каждого из звуков животных в нашем файле животных шумы. Парни, вы уверены, что вы можете решать открытия файла в PHP? Один из способов сделать это, давайте рассмотрим это быстро один способ сделать это С Еореп, как мы видели ранее. Вы можете Еореп some_file.txt. Вы можете открыть его в режиме чтения, как и в C. Это одно совершенно хороший способ сделать это. Вы также то для чтения в файл строка за строкой имеют те же функции, многие из них, что вы сделали в C. У вас есть ЕдеЬз. У вас есть feof, хотя нам не нравится, что использование потому что, помните, что не было большой в C. Вы можете сделать это таким же образом, но вот это действительно круто. Извините, я не хочу, чтобы сделать файл $, но есть функция с именем файла в PHP, и эта функция прямо здесь прохладно, потому что он читает все содержимое файла, который вы укажете, так some_file.txt, читает все содержимое этого файла в массив а затем позволяет итерацию над ним, который является довольно изящный. Если мы обратимся, например, к нашему веб-браузер и мы смотрим на Google для файла PHP Вы можете видеть здесь, что наше руководство говорит, что файл читается весь файл в массив, и мы можем file_get_contents, чтобы вернуть содержимое файла в виде строки, но обычно просто получить его как массив действительно хорошо, потому что то, что он делает оно нарушает его так, что каждый элемент в массиве является одной строке файла, Таким образом, если мы посмотрим на файл 0, это первая линия файл. Файл 1, вторая строка, файл 2, третья линия, и так далее, и так далее. Разве не было бы здорово, если бы это было все, что нужно было сделать в C? Довольно отличный. Дэвид показал это в лекции, и он показал язык был что в дополнение к нашим стандартным цикла в PHP у нас было, что для ($ I = 0; I <10, я + +), и вы можете сделать это в PHP тоже, одно и то же- у нас также есть этот прохладный конструкцию, называемую Еогеасп. Foreach действительно удобно, когда итерации массивов или структур данных потому что он позволяет вытащить каждый элемент массива без необходимости вручную делать индексацию себя, без необходимости вручную создавать индекс переменной, увеличить, вытащить значение в массиве в тот момент, потому что это очень распространенная вещь. Вы, наверное, сделали это т раз, когда вы делаете вещи C в течение семестра, так что с этой Еогеасп мы можем повторить за этот файл массива, и синтаксиса, который мы хотим теперь цикл по этому массиву и указать, что переменная, которую мы собираемся использовать для хранения элемент этого массива на местном уровне, локальные рамки этого цикл по каждому элементу, это мы будем называть его линии. Если это файл просто слова, а есть одно слово в строке Мы могли бы назвать это слово, а, на самом деле просто вы даете этим именем, все, что вы хотите назвать это, , а затем внутри цикла вы можете делать все, что вы хотите с этой переменной строку. Если это не достаточно, чтобы получить значение массива, и вы также хотите получить Индекс вместе с ней вы можете указать имя индекса а также значение, и теперь у вас есть доступ к 2 переменных. У вас есть $ я и линии где $ я это индекс в массиве, и линией является линия, что вы извлечены из файла. Например, если мы хотим, чтобы распечатать эхо линии 0-файла, как это, Мы могли бы сделать это так же, как это, "Line $ I-файла составляет $ линию" а вот то, что мы также не видели еще ни где я только что полностью пропустил% всей этой% S D бизнеса что мы имели дело с в С, а вместо этого я пошел прямо к написание переменных в строке в моей строке. Это называется переменная интерполяции строк интерполяцией где вы начинку переменных прямо в, и переводчик PHP достаточно умны, когда он читает через строку, которая начинается с двойных кавычках- Не одинарные кавычки, с одной строки в кавычках вы не можете сделать этого, но с двойными кавычками, как читает он ищет переменные. Он охотился на них, и если он видит переменных она примет значение переменной и запихивать его в строку, если он может преобразовать его в строку представления, который является довольно изящный. А сейчас давайте закомментируйте все остальные, сохранить, и что мы можем сделать сейчас, это мы можем открыть файл что мы можем назвать some_file.txt-давайте создадим новый файл- и мы можем положить в кучу ерунды вещи здесь просто чтобы проверить все из, сохранить его, назовем его some_file.txt, как я делаю здесь в верхней части, и теперь, если я масштаб просто чтобы убедиться, что все в той же директории- похоже, у меня есть unique.php и some_file.txt в том же каталоге. Если я запускаю PHP unique.php посмотреть, как он печатает каждую строку в файле и какой линии? Это довольно мощная, правильно? Посмотрите, он занял 3 строки кода, чтобы открыть файл. Ну, 4 строки кода. Я не могу рассчитывать сегодня, ясно. Но на самом деле только 2 интересных строк кода, потому что другие 2 были фигурные скобки, но в этом много кода, мы смогли открыть файл, итерацию по ней, вытащите номер строки и саму линию и распечатать его. Прикольных вещей. Шарлотта. [Charlotte] У меня вопрос о синтаксисе. Так Еогеасп сделок с каждой строки файла, которые открывались, , а затем, когда вы хотите сделать что-то с каждой строке вы просто сделать это как и затем связать значение. [Nate H.] Что вы можете сделать прямо здесь-вопрос Еогеасп имеет дело с массивом, так что каждому элементу синтаксиса действительно ForEach, и заметил, что там нет места или что-нибудь между и для каждого. Они должны идти рядом друг с другом, , а затем она занимает в массиве, а то у вас это другое ключевое слово называется, что должен быть там, а после, как вы можете положить одну переменную имя, В этом случае вы будете потянув значения массива, Не индексов, или если вы делаете это, как мы уже писали ниже Вы получаете ключи и значения. У вас есть Еогеасп элемент массива или пару массив как в привязке к значению или просто как ценность. В зависимости от того, что вам нужно, если вы не нужны ключи, то вы можете пойти со значением. Если вы хотите клавиши вы можете пойти с ними. [Charlotte] Я также понял, что мы никогда не заявлял я или линии. Как она даже знаю, что они есть? [Nate H.] Что вы имеете в виду объявить? [Charlotte] Мы никогда не сказал им, что я или линия средств. [Nate H.] Мы никогда не говорили, что я компьютер или линия означает в терминах- [Charlotte] То, что они проиндексированы, или что they're- [Nate H.] Мы никогда не говорили, что это должен быть индекс или ключ и значение, и это потому, что это PHP переводчика. Это служит заявление и говорит, что все в порядке, то ключ будет переменную я хранится в переменной я. Это значение будет храниться в переменной линии, таким образом, это служит заявление из этих переменных и говорит, что $ I является одним из ключевых, и $ линия значение. Да, Элла. [Элла] Если ключи не сделали численно Как это решить, что целью он собирается печатать все? Разве это так же, как это порядка вступили в? [Nate H.] Давайте попробуем. Давайте создадим переменную обр, и мы можем сделать идет до 7. Скажем, 0 переходит в другой массив с 1, 2 или яблоко. Скажем, 7 выходит в 1, б идет в 2, и 3 переходит в 4. Это своего рода сумасшедших глядя пример, потому что мы смешивая строки и целые числа повсюду. Там нет реальной целью этого массива. Я имею в виду, мы могли заказать все в алфавитном порядке по клавишам. Мы могли заказать все в алфавитном порядке по значению. Мы могли бы попытаться взять во внимание, что некоторые строки, некоторые из них целые, и мы могли бы попытаться преобразовать их все к одному типу и посмотреть, что происходит, или мы могли бы рассмотреть их в стоимость, в которой мы уже вошел в них где мы положили этому парню в первом, этот парень в секунду, этот парень в третьем, этот парень в четвертый, и так далее. Давайте посмотрим, что происходит, когда мы запустим этот код. Если мы прокрутите вниз и сделать то же самое рода вещи, а вот это не выводя новые линии. Когда он читал вещи из файла он был в том числе новых линий в значениях, который был, почему он распечатал красиво, а здесь этого не произошло, так вот почему все smushed вместе. Давайте добавим в том, что новая линия просто сделать все хорошо. Давайте повторно, и поэтому здесь Посмотрите, что произошло. Здесь печатались все в порядке, в котором мы ставим его в массив. Это не сохранить порядок в этом смысле. Возвращаясь к этой проблеме уникумов , где мы хотим, чтобы иметь возможность перебора файлов, и мы дадим его some_file.txt, и мы собираемся для перебора это так. Мы сказали, что мы хотели бы использовать массив, чтобы убедиться, что мы получили все уникальные линии оттуда, и мы могли бы сделать это очень легко от просто хранить в массиве, мы, конечно, объявить вне рамок цикла, и мы сказали, что если бы мы использовали строки в файле в качестве ключей в массиве если мы вошли дубликат линии мы бы отменяя предыдущее значение. Это не всегда возможно иметь 2 ключей, которые идентичны в одном массиве. Мы можем сделать это. Мы будем избавиться от этого эха заявление прямо здесь. Здесь мы хранении строки в файле в массиве использования себя в качестве ключа. Ничего на него, и оказывается, что мы даже не нужно этого ключа. Нам не нужно, что я переменная. В этот момент, если бы мы должны были сделать еще один цикл по каждому элементу и мы должны были цикл по каждому обр и линия сейчас, если мы эхо-ой, простите. Мы не можем использовать запятую. Мы должны использовать это в качестве ключевого слова. Теперь, если мы выводим линию мы должны получить все уникальные слова в файле. Если мы пойдем до some_file.txt, и скажем, что мы делаем яблоко, банан, яблоко, яблоко, банан, если мы распечатку всех уникальных слов в этот файл мы должны получить только Яблоко и банан распечатать. Если мы сохраним эту, теперь вот мы в масштаб, PHP unique.php, и та-да. Мы успешно uniqued файл. В заключительной части этой проблеме прошу вас разобраться в этом массиве, прежде чем напечатали его из потому что в этом простом примере, который мы только что сделали нам повезло в том смысле, что файл- мы сделали это надуманный пример с яблоками и бананами. Было уже отсортированы. Но с помощью простой функции сортировки можно отсортировать массив, который является довольно изящный. Последнее, что я хотел бы поговорить с вами, ребята об очень быстро является то, что такое PHP это все хорошо, и это супер удобно , чтобы узнать, как это сделать, если вы когда-нибудь понадобится сделать маленький, быстрый вещи программно. Например, если мне нужно написать программу, которая, скажем, ставит всех в разделах Я не собираюсь идти и писать на языке C. Это собирается быть длинным. Это собирается быть даже боль, особенно если есть файлы участие, так же, как вы, ребята, видели. Это так приятно, что именно с этого много кода прямо здесь мы были в состоянии копировать через файл, вытащить все уникальные значения и печатать их обратно. Тем не менее, для вашего задания, для ваших проектов, если вы создаете веб-сайтов с PHP власти в том, что мы проводим нашу PHP файлов через эту переводчика, и переводчик обрабатывает все внутри тегов PHP, оставив все остальное нетронутым и выплевывая результаты. Мы можем сделать это, чтобы построить HTML программно. Теперь, если мы вернемся к спецификации, последняя проблема в спецификации Переговоры об этой идее концентрации и создание выпадающего меню, которые вы можете или не можете сделать, в зависимости от того, что ваш окончательный проект делает, , что позволяет пользователю выбрать из списка всех возможных концентраций их одной концентрации. Теперь, это вид боли, чтобы напечатать это из и придется делать все это вручную, особенно, когда вы испытываете, чтобы убедиться, что у вас есть все угловые скобки в нужном месте и все кавычки в нужном месте, так с PHP вы можете сделать это программно, и вы можете сделать это очень быстро. Давайте посмотрим, как это сделать. Мы собираемся открыть новый файл. Мы собираемся поставить в нашем PHP тэги. Мы будем называть это concentrations.php, и теперь, когда вы делаете это, своего рода хорошая вещь, чтобы думать о когда вы пытаетесь смешать и соответствовать вашим PHP и ваш HTML является выяснение того, хорошо, что это часть, которую я хочу программно генерировать? Какую роль, что я могу программно генерировать? Это правда, что вы можете сделать все ваши HTML Внутри PHP блоков. Вы можете повторить все из HTML в виде строки. Например, если я хочу, чтобы начать делать выбор тегов внутри PHP Я могу сказать, эхо, скажем, выберите имя = концентрация, а затем вниз я мог бы другая эхо тегов или другого эхо называют близкие выбора. Это один из способов сделать это, потому что это буквально собираетесь делать будет распечатать эту строку, когда она проходит через интерпретатор PHP, так что результат будет HTML. Если бы я сохранить этот файл, поскольку это прямо сейчас и я бегу PHP concentrations.php посмотрите, что у меня есть. Я получил эту открытую близко выберите тег. Если бы мне пришлось это сделать, и я должен был сохранить этот результат в файл, говорят, concentrations.html-ожидание, похоже, л перешел на другую сторону- Теперь, если я открываю здесь concentrations.html вы видите у меня есть действующий HTML файл. Разве что немного странно? Мы используем PHP для создания HTML, создать действующий HTML. То, как мы делаем это, мы просто имеющих печать PHP HTML, что мы хотим, чтобы напечатать. Это буквально как PHP веб-сайты работают. Когда вы посещаете веб-сайт, который посылает вам что-то вроде что-то, что-то, что-то точка ком черту index.php Компьютер буквально вызова index.php, работает он через переводчика PHP, и все, что выходит нежелательной он посылает обратно в браузер и говорить эй, браузер, интерпретировать это как HTML. Приятно то, что это может быть боль, чтобы постоянно писать эхо, эхо, эхо, эхо и приложить все в кавычках, как это, поэтому, если вы хотите написать HTML который будет статическим себя, вы можете сделать это так, положить его на улицу, закрыть его, , а затем здесь вы только положить внутрь PHP теги, которые вы знаете Вы хотите программно генерировать, и в данном случае это те опции теги , которые являются болью для генерации. Например, мы могли бы создать тысячи теги вариант , делая что-то вроде этого, $ I <1000, я + + и говорят значение эхо вариант = $-Ой, я не могу этого сделать. Ну, давайте попробуем и посмотрим, что произойдет. $ Я и говорю я $