Этот урок набрал набрал достаточно большое количество
комментариев и дальнейшее его комментирование отключено.
Если вы хотели убедиться в правильности выполнения ДЗ или у вас возник вопрос по уроку,
посмотрите ранее добавленные комментарии, кликнув по кнопке ниже. Скорее всего вы найдете там то, что искали.
Если это не помогло - задайте вопрос в чате в телеграме - https://t.me/php_zone
Читайте задание внимательно, пожалуйста. Сказано написать функцию. Как у нас определяются функции? С помощью слова function. В вашем решении я этого не вижу.
Коммент для будущих поколений:
Вариант рабочий, но не самый оптимальный. array_count_values под капотом идет и считает для каждого элемента число совпадений.
При этом каждый раз, когда находится новое число, добавляется элемент в массив со значением элемента в качестве ключа.
И получается что мы расходуем память на лишние элементы, которые нам неинтересны.
Решение работает, повторюсь, и на небольших массивах будет работать довольно быстро. Но если брать массив с миллионом значений, то будет уже очень большой разрыв в производительности.
Смотрите ниже в комментариях вариант с foreach - он более оптимальный.
Нет, нужно было просто передать число 1 вторым аргументом. А у вас в коде зачем-то в переменную перед этим складывали, которая нигде не использовалась.
во второй функции в самом начале стоит определить $count = 0.
для if и else всегда используйте фигурные скобки.
прочитайте домашку ещё раз - функции не должны ничего выводить (никаких echo быть не должно), они должны что-то возвращать (должны быть return). Первая из них должна вернуть true или false, тут сразу можно указать тип возвращаемого значения bool. Вторая функция должна вернуть целое число, тут можно указать тип возвращаемого значения int.
аргументы функций должны иметь тип int и array - это стоит явно указать перед аргументами.
сами алгоритмы правильные, это хорошо, но стоит поработать над замечаниями.
<?php
// Напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true,
// если переданное значение присутствует в массиве и false - если нет.
$num = 4;
$array = [2, 6, 4, 7, 3, 6, 8];
$status = false;
function searchNum($array, $num)
{
foreach ($array as $volume) {
if ($volume === $num) {
return true;
}
}
return false;
}
echo var_dump(searchNum($array, $num));
// Напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
// Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
$num = 2;
$array = [2, 6, 4, 2, 1, 2, 8];
function numberFunc($array, $num)
{
$i = 0;
foreach ($array as $volume) {
if ($volume === $num) {
$i++;
}
}
return $i;
}
echo numberFunc($array, $num);
( ! ) Fatal error: Uncaught TypeError: Return value of arrayCheck() must be an instance of boolean, boolean returned in C:\openServer\OSPanel\domains\myproject.loc\www\index.php on line 32
( ! ) TypeError: Return value of arrayCheck() must be an instance of boolean, boolean returned in C:\openServer\OSPanel\domains\myproject.loc\www\index.php on line 32
$i = false;
function arrayCheck (array $array, int $x): bool
{
foreach ($array as $value){
if ($value === $x) {
$i = true;
break;
}
else {
$i = false;
}
}
return $i;
}
arrayCheck([3,4,6,8,9,0],0);
Почему нет типов у аргументов в функциях, как в уроке?
В первой задаче функция должна возвращать булево значение, а не выводить что-то.
Имена переменных должны быть с маленькой буквы.
После $IsNumberFound = true; нужно делать break, так как дальше можно не искать.
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
function searchToArray($arr, int $n)
{
foreach ($arr as $item) {
if($item === $n)
return true;
}
return false;
}
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
function searchCountInToNumbersInArray($arr, int $n)
{
$count = 0;
foreach ($arr as $item) {
if($item === $n)
$count++;
}
return $count;
}
// напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
// Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
function isArgumentInArray ($array, $value) {
foreach ($array as $key => $index) {
if ($array[$key] == $value) {
return true;
}
}
return false;
}
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
// Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
возникли непонятки с циклом foreach ($massive as $key => $index)
в первом случае я писал условие: foreach ($massive as $key), отработало все хорошо вроде как, а вот во втором случае никак не хотел работать foreach ($massive as $key). в примерах у нас есть выражения без $index, но прогнав цикл через var_dump(), я увидел что в некоторых индексах масива потерялись значения, писало типа Null, хотя там Int.. как так, хз...
Почему не указаны типы аргументов функций? Перечитайте урок про функции.
По первой задаче:
foreach ($array as $key => $index) {
Индексом называют ключ массива. У вас же $index - это значение, правильнее будет назвать его $value или $item. Кроме того, здесь можно обойтись более простой конструкцией, без ключа:
foreach ($array as $item) {
if ($item === $value) {
...
По второй - тернарный оператор используется неправильно. Он нужен, когда результат его выполнения будет использоваться. Пример:
$x = 4 > 2 ? 1 : 0;
В этом примере результат из правой части будет присвоен $x. В вашем же случае правильнее использовать if.
Неподходящие имена переменных. item - один элемент, а у вас так называется массив, то есть множество элементов. $list - список, у вас - это единственный элемент. Ерунда выходит)
То же самое.
P.S. И то и то работает, это уже хорошо. Но читать такой код другим программистам будет очень сложно.
//задаем переменные
$array = [3,5,7,2,324,3,64,2,35,7];
$number = 2;
//создаем фунция нахождения числа(y) в массиве(x)
function findNumber($x,$y)
{
//с помощью цикла проверяем число (у) на совпадение со значениями массива(х)
foreach ($x as $value) {
//задаем условие поиска
if ($value == $y) {
//если у совпадаем с числом в массиве выводим:
echo 'Число '.$y.' найдено! <br>';
// и прерываем цикл
break;
}
//в противном случае выводим
echo 'Число '.$value.' не совпадает с числом '.$y.'<br>';
}
}
findNumber($array,$number);
//задаем переменные
$array = [3,5,7,2,2,2,324,3,64,35,7,];
$number = 2;
//создаем фунция нахождения числа(y) в массиве(x)
function findNumber($x,$y)
{
//переменная которая считает число вхождений
$count = 0;
//с помощью цикла проверяем число (у) на совпадение со значениями массива(х)
foreach ($x as $value) {
//задаем условие поиска
if ($value == $y) {
//если у совпадаем с числом в массиве добавляем +1 к счетчику
$count+=1;
// и продолжаем цикл
continue;
}
}
//выводим количество вхождений
echo 'Число вхождений: '.$count.'<br>';
}
findNumber($array,$number);
После return не нужен break. После return функция завершает свою работу.
true и false пишутся с маленькой буквы.
У аргументов функций должны быть указаны типы!
Если начать искать число 5, то выдаст false, хотя в массиве это число есть. Правильно пишется nUmber.
Функция должна возвращать число вхождений, а не выводить его. Второй echo после вызова не имеет смысла - функция ничего не вернет, а значит и выводить нечего.
На конструкции return функция завершает свою работу. После него break не имеет смысла - этот участок кода никогда не выполнится. Присваивание в переменную перед тем как вернуть значение тоже не имеет никакого смысла.
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
numberOfRepetitions - неподходящее название. number говорит о том, что в переменной лежит число. На деле же там массив.
Кроме того, вместо того чтобы помещать одно и то же число в массив а затем считать число элементов в нем, лучше просто завести переменную со счетчиком вхождений.
<?php
/* напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
*/
function twoArgumets ($array=[27,2,3,4,13]) {
$a=13;
foreach ($array as $item) {
if ($a===$item) {
echo '<br>';
echo 'true';
} else
echo 'false';
echo '<br>';
}
}
echo twoArgumets();
Понятно, там другой синтаксис. В PHP, когда вы пишете
twoArgumets($array=[27,2,3,4,13],$i=13);
Сначала создаётся переменная array со значением переданного массива, потом переменная i, со значением 13, а затем эти переменные передаются в функцию. Первые два шага, как вы понимаете, нам не нужны.
<?php
/ опять ошибся и не заключил код в нужные теги, а на редактировании исправить уже нельзя
function twoArgumets ($array=[27,13,3,4,13,45,44,13,99,18,52],$i=0) {
$a=13;
foreach ($array as $item) {
if ($a===$item) {
$i++;
}
}
return $i;
}
echo twoArgumets();
Эстетичнее было бы написать массив вне функции, а в него передать только название) $i = 0 при вызове функции тоже не нужно, просто через запятую указываешь число)
Укажите типы аргументов. Слишком сложно с помощью for. К тому же на каждой итерации будет выполняться проверка условия и каждый раз будет вызываться count(). Решение - вынести число элементов в массиве в отдельную переменную до цикла. Тогда count вызовется только один раз, а дальше будет использоваться уже готовое значение из переменной. Ну а вообще тут конечно просто foreach нужно использовать.
Укажите типы аргументов. Та же история с count. Функция должна возвращать число, а не строку. Ну и foreach тут тоже самое простое решение.
По второй задаче - более оптимальным решением будет просто увеличивать счётчик при каждом нахождении числа.
P.S. разбивайте комментарии - одна задача, один комментарий. И используйте оформление кода - кнопка слева вверху в окне добавлении комментария.
раз:
<?php
$y=random_int(-10,10);
echo 'Случайное число:'.$y.'<br>';
$arr=[8,-25,22,1,2,-10,-5,1];
$x=$y;
$isNumberFound=false;
foreach ($arr as $item){
echo 'Сравниваем числа '.$item.'<br>';
if ($item==$x){
$isNumberFound=true;
}
}
echo $isNumberFound ? 'Число найдено':'Нинашель=(';
два:
вот насчет этого задания не совсем понял, но вроде же так можно поступить, нет?
<?php
$arr=array(2,8,9,88,2,4,7,2,2);
$counts=array_count_values($arr);
echo 'Заданное число повторяется'.' '.$counts[88].' раз';
второе задание сначала решил потом почитал коменты и понял, что сделал все не правильно
<?php
function numbersOfRepetitions($array, $element)
{
$result=0;
foreach ($array as $value){
if ($value==$element){
$result++;
}
}
return $result;
}
echo 'Заданное число повторяется '. numbersOfRepetitions([2,7,9,11,44,5,6,8,8,4,6],44).' раз.';
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
return $isNumberFaund = true; - не имеет смысла присваивать переменной значение, оно не используется больше нигде. Правильно или написать $isNumberFaund = true; и затем в конце функции сделать return. Либо сразу писать return true, но тогда потеряется изучаемый в этом уроке оператор break.
Если число не найдено, функция должна вернуть false. У вас она не возвращает ничего (результат - null). Можете проверить var_dump-ом
Так в заданиях же сказано массив и переменная, которая принимает "какое-то значение", а вдруг массив будет с строковыми элементами? Насчет continue, честно говоря, подумал, что для усвоения материала было бы неплохо написать ( и что именно так и нужно было)
Прошу прощения. Значение действительно должно быть любым. А continue не несёт никакого смысла в данном примере. После этой строки и так произойдет переход к следующей итерации.
Имело бы смысл написать так:
function countVarInArray(array $arr, $var): int
{
$count = 0;
foreach ($arr as $elem) {
if ($var !== $elem) {
continue;
}
$count++;
}
return $count;
}
Почему в переменной сначала числа, а потом булево значение? Тип данных не следует мешать. Функция опять ничего не возвращает. Для чего там var_dump? Всё что можно собрали в кучу. Читайте урок ещё раз.
return($result); - что за круглые скобки? Для чего?
Хотел поинтересоваться: уже не первый урок замечаю, что при сравнении чисел используется оператор тождественности (===) вместо обычного равенства (==). По идее же в предыдущих уроках говорилось, что операторы равенства приводят операнды к одному типу, а оператор тождественности наоборот проверяет типы операндов. В чем необходимость проверять в условии помимо самого значения еще и тип данных?
В принципе я сам немного понял ответ для своего предыдущего вопроса, попробовав усложнить первую задачу тем, что в массиве присутствует несколько типов данных (не знаю, кстати, какой тип данных тогда указывать в определении функции, т.к. вы меня в прошлых дз просили это делать).
И если сравнивать не тождественно, то тогда получается, что при поиске строки 'приветик' интерпретатор просто переводит строку в другой тип данных и выдает, что значение найдено, хотя его в массиве не присутствует. Но при тождественном сравнении, все проходит корректно и функция возвращает false. Хотелось бы полностью разобраться как и почему это происходит, либо же получить наводку, где это можно изучить. Заранее спасибо
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
$arrayNumbers = [3, 82, 35, 66.43, 'привет', 64, 443, true, 0, 7, 77, 777];
function foundNumber($array, $value)
{
foreach ($array as $item) {
if ($item === $value) {
return true;
break;
}
}
return false;
}
echo foundNumber($arrayNumbers, 'приветик') ? 'Значение найдено' : 'Значение не найдено';
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
$arrayNumbers = [3, 82, 7, 66.43, 'привет', 64, 443, true, 0, 7, 77, 777];
function countNumber($array, $value)
{
$n = 0;
foreach ($array as $item) {
if ($item === $value) {
$n++;
continue;
}
}
return $n;
}
echo 'Количество вхождений числа: ' . countNumber($arrayNumbers, 7);
Функция, принимающая в качестве аргумента всё подряд - это плохая функция. Исторически так сложилось, что PHP позволяет это делать. Но сейчас все стараются писать со строгой типизацией. Так просто меньше ошибок.
Где типы аргументов?
Скобка, открывающая тело функции, пишется на следующей строке.
Первая функция не должна возвращать строку.
Переменные с префиксом is... используются для булевых значений.
Использовать array_key_last($x); вместо count() - то ещё извращение. Да и зачем здесь for вместо foreach, тоже непонятно. В программировании нужно всё упрощать, а не усложнять.
По вашему вопросу - разницы нет. Нужно использовать то, что больше подходит.
<?php
$array = [1, 32, 15, 77, 9, 10, 32, 90, 77];
$number = 77;
function valuePresentInArray (array $x, int $y)
{
$isNumberFound = false;
foreach ($x as $value) {
if ($value === $y) {
$isNumberFound = true;
break;
}
}
if ($isNumberFound) {
return true;
}
return false;
}
echo valuePresentInArray($array, $number) ? 'Число ' . $number . ' есть в массиве' : 'Числа ' . $number . ' нет в массиве';
echo '<br>';
function numberEntryToArray (array $x, int $y)
{
$count = 0;
foreach ($x as $value) {
if ($value !== $y) {
continue;
}
$count++;
}
return $count;
}
echo 'Число вхождений числа ' . $number . ' в массив = ' . numberEntryToArray($array, $number);
В первом задании использовал break для домашнего задания, код у меня получился большим. Первым делом написал функцию без break и такой вариант больше понравился =)
function valuePresentInArray (array $x, int $y)
{
foreach ($x as $value) {
if ($value === $y) {
return true;
}
}
return false;
}
<?php
/*напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.*/
$trueNumber = 9;
$array = [];
//создаю и вывожу массив
for ($i=0; $i<=15; $i++) {
$array[] = $i;
echo $array[$i], ' ';
}
echo '<br>';
//ищу число 9 в массиве
$equality = false;
foreach ($array as $testNumber) {
if ($testNumber === $trueNumber) {
$equality = true;
break;
}
}
echo $equality ? 'Число 9 найдено' : 'Число 9 не найдено';
echo '<br><br>';
/*напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.*/
$array2 = [2, 3, 6, -7, 8, -11, 1, 3, 3, 0];
$coincidenceNumber = 3;
$ingoings = 0;
foreach ($array2 as $coincidence) {
if ($coincidence !== $coincidenceNumber) {
continue;
}
else {
$ingoings++;
}
}
echo 'Число вхождений числа 3 в массив равно ', $ingoings;
Где типы аргументов? Имена функций пишутся с маленькой буквы. Скобка, открывающая тело функции, пишется на следующей строке. В задании сказано что функция должна возвращать значение, у вас она ничего не возвращает.
Советую начать курс с самого начала и быть более внимательным. Как в изучении материала, так и в выполнении ДЗ.
Из какого-то из прошлых уроков. Не помню.
Неправда. Не было такого.
Если будете вместо конкатенации продолжать писать запятые, будете сами проверять домашние задания :) Я же написал вам, что нужно использовать точку, вы мне в ответ на этот комментарий опять запятую пишете. Что за неуважение? :)
Типы аргументов в данном случае только мешают. Какие мог, объявил. Если не объявил - значит при объявлении типа ломается код.
По поводу остального, я слишком ограничен по времени, чтобы отслеживать, где там точка и с какой строки скобка. Моя цель не стать разрабом. Мне достаточно рабочего кода. Не хотите, не проверяйте :)
<?php
/*напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.*/
function trueNumberInArray (array $array, int $trueNumber)
{
$equality = false;
foreach ($array as $testNumber) {
if ($testNumber === $trueNumber) {
$equality = true;
break;
}
}
echo $equality ? 'Число '. $trueNumber. ' найдено' : 'Число '. $trueNumber. ' не найдено';
echo '<br>';
return $equality;
}
echo 'Выведем createdArray с помощью for и echo: ';
for ($i=0; $i<=15; $i++) {
$createdArray[] = $i;
echo $createdArray[$i], ' ';
}
echo '<br><br>';
trueNumberInArray ($createdArray, 0);
trueNumberInArray ($createdArray, 9);
trueNumberInArray ($createdArray, 20);
echo '<br>';
/*напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.*/
function countOfNumbersInArray (array $reseachedArray, $coincidenceNumber)
{
$ingoings = 0;
foreach ($reseachedArray as $coincidence) {
if ($coincidence !== $coincidenceNumber) {
continue;
}
else {
$ingoings++;
}
}
echo 'Число вхождений числа '. $coincidenceNumber. ' в массив равно '. $ingoings;
echo '<br>';
return $ingoings;
}
$array2 = [2, 3, 6, -7, 8, -11, 1, 3, 3, 0];
echo 'Выведем array2 с помощью print_r: ';
print_r($array2);
echo '<br><br>';
countOfNumbersInArray ($array2, 3);
countOfNumbersInArray ($array2, -11);
countOfNumbersInArray ($array2, 2.2);
Смотря что понимать под работой. Мне надо научиться управлять базой данных и уметь админить сайт. В перспективе это должен быть онлайн-магазин, возможно, с форумом.
Решение второго задания не самое оптимальное. Вместо того чтобы посчитать только число вхождений нужного элемента, считается вхождение для каждого - а это лишняя работа.
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
function ifElementInArr(array $array, int $x): bool {
$flag = false;
foreach ($array as $elem){
if($elem === $x){
$flag = true;
break;
}
}
return $flag;
}
var_dump(ifElementInArr([1,2,3,4], 4));
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
// Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
function countElementInArr(array $array, int $x):int {
$count = 0;
foreach ($array as $elem){
if ($elem == $x){
$count++;
}
}
return $count;
}
echo countElementInArr([1,2,1,3,1], 3);
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
function searchOperators(int $x, array $mainArray) {
foreach($mainArray as $key)
{
echo "Result >>> " . $key . "</br>";
if($x === $key) {
return true;
}
}
return false;
}
Функция по заданию не должна ничего выводить, она должна только возвращать.
$valid = false;
Зачем на каждой итерации задавать одно и то же значение? Это нужно сделать один раз еще до начала цикла.
return $valid ? 'TRUE' : 'FALSE';
Должно возвращаться булево значение, а не строка!
В целом домашнее задание сделано ужасно. Думаю, сказываются большие перерывы в вашей практике. Домашнее задание к уроку по функциям было сдано больше месяца назад. С таким подходом ничего не получится.
Создается ощущение, что я сделал что-то не так, поскольку ни continue, ни break в данном задании не увидел, где бы можно было применить.
Оговорюсь сразу, что тип второго аргумента что в первом, что во втором задании не указывал специально, поскольку посчитал, что в массивах значения могут быть разноплановыми, так что эти функции можно применять для поиска не только чисел
/*
* 1. напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
* Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
*
*/
function isInArr(array $arr, $thing)
{
foreach ($arr as $item) {
if ($item === $thing) {
return true;
}
}
return false;
}
/*
* 2. напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
* Функция возвращает число вхождений числа в массив.
* Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
*
*/
function howManyInArr(array $arr, $thing)
{
$count = 0;
foreach ($arr as $item) {
if ($item === $thing) {
$count++;
}
}
return $count;
}
<?php
//Напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
$array = [1,9,1,5,14,6];
$x = 5;
function func1($array, int $x) {
foreach ($array as $item) {
if ($item === $x) {
return true;
}
}
return false;
}
echo func1($array, $x) ? 'true' : 'false';
echo '<br>';
//Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
$array = [7,9,7,5,14,7,7,6,7];
$x = 7;
function func2($array, int $x) {
$i = 0;
foreach ($array as $item) {
if ($item === $x) {
$i++;
}
}
return $i;
}
echo func2($array, $x);
<?php
for ($i = 0; $i < 100; $i++) {
$myArr[] = rand(0, 10);
}
var_dump($myArr);
echo '</br> Число на вход функций: ' . $a = 1 . '<br/>';
// Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
function foo0(array $arr, int $num): bool
{
foreach ($arr as $elem) {
if ($elem === $num) {
$ret = true;
break;
}
$ret = false;
}
return $ret;
}
var_dump(foo0($myArr, $a));
echo '<br>';
//Функция возвращает число вхождений числа в массив.
function foo1(array $arr, int $num): int
{
$i = 0;
foreach ($arr as $elem) {
if ($elem === $num) {
$i++;
}
}
return $i;
}
var_dump(foo1($myArr, $a));
<?php
$array = [1, 4, 8, 3, 2, 5, 8, 9, 4];
$item = 2;
echo 'Есть ли переменная ' . $item . ' в массиве' . '<br>';
function ifIsVariable(array $array, int $y)
{
foreach ($array as $x) {
if ($x === $y) {
return true;
}
}
return false;
}
echo ifIsVariable($array, $item) ? 'true' : 'false';
Написал так : ? 'true' : 'false', потому что без этого у меня выводиться просто 1. А если с функцией var_dump() то выводиться bool(true). А так тут просто как в задании true.
Задание 2
<?php
$array2 = [1, 4, 3, 8, 2, 5, 3, 8, 9, 4, 3];
$a = 3;
echo 'Количество числа ' . $a . ' в массиве' . '<br>';
function countInputs(array $array, int $y)
{
$i = 0;
foreach ($array as $x) {
if ($x === $y) {
$i++;
}
}
return $i;
}
echo countInputs($array2, $a);
Написал так : ? 'true' : 'false', потому что без этого у меня выводиться просто 1. А если с функцией var_dump() то выводиться bool(true). А так тут просто как в задании true.
В задании речь была только о том, чтобы функция возвращала это значение, что вы и сделали. Выводить можно var_dump-ом.
когда знаний недостаточно, для решения задания применяется в том числе метод "тыка", так и появляются ненужные строчки кода..
код исправил, типы аргументов добавил
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.
Код конченный, но по другому я не придумал, буду рад узнать правильную версию кода :)
а еще когда я в шторме писал && вместо and, то ничего не работало
Такой код у меня вышел спустя где-то минут 30 отладки, сначала получалось что вместо 6 первых хначений выводит 12, потом вместо 6 выводило 7, был момент что для 6 первых значений выводило 6, а для 3 выводило 4. И только такой вариант как я скинул начала работать похоже на то, что в задании
Жаль, что на CodingZone нельзя посмотреть какое-нибудь образцовое решение, а то у меня задание с числами Фибоначчи через одно место получилось, а как-то по-другому сделать у меня ума не хватило.
Все пытаюсь понять какой цикл лучше использовать, поэтому извиняйте за 3 варианта )))
В данном случае цикл foreach более оптимизирован получается, так как сам перебирает массив, правильно я понимаю?
Скобка, открывающая тело функции, пишется на новой строке.
return $array = true;
Для чего здесь присваивание в переменную $array?
if ($var == true) {
бессмысленное сравнение в рамках условия - выражение всегда будет приводиться к boolean. Получается что вы проверяете сравнение (true == true), вместо того чтобы сразу проверить значение (true).
for ($i = current($array);$i == true;$i = next($array)) {
Что это вообще? Нормально же с foreach писали :)
else echo 'Совпадений нет';
Всегда используйте фигурные скобки для блоков if-else.
3 задание - foreach, зачем всё это городить
4 задание
$i = $line;
Для чего просто скопировали значение?
+ Проблема с форматированием во всех заданиях. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
В целом ощущение, что все предыдущие уроки вы не проходили а пришли на этот урок с каких-то других курсов типа гикбрейнс. На этом уроке таких ошибок уже быть не должно. Я бы на вашем месте начал с самого первого урока и выполнял все ДЗ, заодно сразу исправляя ошибки по моим комментариям.
Гикбрейнс? Улыбнуло )))
На самом деле все проще - по PHP кроме вашего курса, только до этого пробовал читать сразу мануалы с php.net, но понял, что тяжеловато дается, нужно более разжеванней. Но когда начал курс, с каждым уроком не стал вываливать свое дз, а просто сравнивал свое решение с уже другими в комментариях. Хотя зря, как раз на эти ошибки вы бы уже и указали ранее. Виноват - исправлюсь! :-D
$a = [2, 4, 5, 6, 8, 3];
$b = 6;
//нужно найти число 6 в массиве и остановиться
function found(array $a, int $b)
{
foreach ($a as $look) {
if ($b == $look) {
return true;
}
}
}
echo found($a, $b) ? 'Found' : 'Not found';
Второе после правок
$a = [2, 4, 5, 6, 8, 3, 2, 2];
$b = 2;
$c = 0;
//нужно найти сколько раз число 2 входит в массив
function howMuch(array $a, int $b)
{
foreach ($a as $mass1) {
if ($mass1 == $b) {
$c++;
}
}
echo $c;
}
echo howMuch($a, $b);
По поводу четвертого.)
Кнопку видел и нажимал.
Выдает ошибку The expected output is different from the actual. Check your algorithm.
Также пишет, что нет ИНПУТ параметра, но я же его никуда не девал.
Он определен, как я понял, по умолчанию - $line = trim(fgets(STDIN));
А ОУТПУТ - судя по тестам в IDE код должен работать и выдавать ожидаемую задачей последовательность (0 1 1 2 3 5). Не могу понять. Пока двинусь дальше. https://codingzone.io/problems/4/solution/1646
<?php
/*Написать функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.*/
$array = [56, 5, 0, 4, 8, 10];
$a = 8;
$permissible = false;
function num($array, $a)
{
foreach ($array as $om) {
if ($om === $a) {
return true;
return false;
}
}
}
echo var_dump(num($array, $a));
echo '<br><br>';
/*напиcать функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
Функция возвращает число вхождений числа в массив.
Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.*/
$array = [1, 2, 6, 1, 3, 1, 9];
$a = 1;
function numG($array, $a)
{
$b = 0;
foreach ($array as $om) {
if ($om === $a) {
$b++;
}
}
return $b;
}
echo numG($array, $a);
echo '<br><br>';
/*Написать код числа Фибоначчи, который будет выводить
первые n чисел этой последовательности.*/
/*такое мы ещё не проходили, поэтому на форуме php нашёл
и чутка изменил*/
function fibonacci($n)
{
if ($n < 3) {
return 1;
} else {
return fibonacci($n - 1) + fibonacci($n - 2);
}
}
for ($n = 1; $n <= 8; $n++) {
echo(fibonacci($n) . " ");
}
echo '<br><br>';
/*Найдите все четные числа и выведите их, разделяя пробелами.
Порядок чисел должен быть таким же, как и на входе.*/
for ($a = 1; $a < 9; $a++) {
if ($a % 2 === 0) {
echo $a . ' ';
}
}
Понял свою ошибку, после функции return функция завершает свою работу, то есть проходит true, и происходит возвращение. В одной функции нельзя же писать 2 раза retutn...
А что если как вариант выставить return false; за пределы. По идеи так будет корректно работать?
Помучился знатно, код проверки прошел, но т.к. отличается от варианта решения, хотел бы узнать Ваше мнение)
И еще один вопрос, у меня в браузере ошибки выводятся просто текстом а не цветной таблицей и массивы пишутся в строку. Попытался гуглить, но вразумительного ответа не нашел, может подскажите в какую строну и что смотреть?)
Ctrl+Alt+L постоянно нажимаю, вставил данный код специально в шторм и нажал комбинацию, только добавилась пустая строка перед последней строчкой с функцией. Поэтому и понял, что фигурные скобки у функции переносятся, а у циклов и условий на одной строке.
Не могу не похвастаться решением задачи про числа Фибоначи! ;)))))
Я себе весь мозг сломала, прикидывая и так и эдак, как решить задачу. А ларчик просто открывался! :))))
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.
Детали
Input:
7 13 99
Ожидаемый output:
Актуальный output:
Notice: Undefined variable: arr in /app/code-3422890021211985578.php on line 10
Warning: implode(): Invalid arguments passed in /app/code-3422890021211985578.php on line 10
(Обратите внимание: неопределенная переменная: arr in /app/code-3422890021211985578.php на линии 10
Предупреждение: implode(): недопустимые аргументы, переданные в /app/code-3422890021211985578.php на линии 10)
Однако, смысл всё равно не ясен.
Десятая строка в моём коде: $str = implode(' ', $arr);
В браузере код работает корректно...
(Разумеется, вторая строка выводимого в браузер кода имеет вид: $line = '7 13 99'; как и откуда извлекать данные по STDIN тоже пока не известно)
Значит у вас в php.ini не включен показ ошибок уровня NOTICE.
Ошибка возникает из-за того что переменная $arr не определена в тот момент, когда она передается в функцию implode
Функция по заданию не должна ничего выводить, она должна возвращать.
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Функция по заданию не должна ничего выводить, она должна возвращать.
/*1. напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true,
если переданное значение присутствует в массиве и false - если нет.*/
$arrayOfNumbers1 = [1, 0, 24, 55, 4, 5, 7, 19, 98, -1, 4]; //создали массив с числами
var_dump($arrayOfNumbers1);
echo '<hr>';
function isNumberFoundInArray(array $array, int $requiredNumber)
{
foreach ($array as $arrayNumber) {
if ($arrayNumber !== $requiredNumber) {
continue;
} else {
return true;
}
}
return false;
}
echo isNumberFoundInArray($arrayOfNumbers1, 55);
echo '<hr>';
/*2. напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число
вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.*/
$arrayOfNumbers2 = [1, 0, 3, 1, 2, 2, 7, 9, 9, 3, 3, 3];
$requiredNumber = 3;
function numberOfOccurrencesOfAnArray($array, int $requiredNumber)
{
$numberOfEntries = 0;
foreach ($array as $arrayNumber) {
if ($arrayNumber !== $requiredNumber) {
continue;
} else {
$numberOfEntries++;
}
}
return $numberOfEntries;
}
echo 'Число вхождение числа ' . $requiredNumber . ' в массив равно ' . numberOfOccurrencesOfAnArray($arrayOfNumbers2, $requiredNumber);
echo '<hr>';
/*3. Дана строка с числами, разделенными пробелом. Найдите все четные числа и выведите их, разделяя пробелами.
Порядок чисел должен быть таким же, как и на входе.*/
$line = '1 22 33 4 55 66 77 8 9';
function findEvenNumbers($array)
{
$array = explode(' ', $array);
foreach ($array as $key => $numbers) {
if ($numbers % 2 !== 0) {
unset($array[$key]);
}
}
return implode(' ', $array);
}
echo findEvenNumbers($line);
echo '<hr>';
Добрый день. 3я задача прошла проверку на сайте. С фибоначчи не смог решить. Посмотрел решение.
$isNumberFound = false; //переменная с флагом присутствия числа в массиве
для чего это?
ifNumberFoundInArray должно начинаться с is... а не if...
return 'true';
Функция должна возвращать булево значение а не строку
ifNumberFoundInArrayAndHowManyTimes - неподходящее название. Функция должна вернуть только число вхождений, дополнительно она не возвращает найдены числа или нет.
FindEvenNumbers - имена функций пишутся с маленькой буквы
Спасибо за замечания. Поправил.
По поводу 1ой задачи изначально у меня было тоже просто return true/false, но echo отображал в браузере 1 (для true) и ничего (для false). Я проверил var_dump и возвращалось нормально булево значение, но я подумал что нужно чтобы в браузере писалось true/false. Поэтому написал строку. Не внимательно задачу прочитал.
<?php
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
//Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
function fun(array $x, $y)
{
$isNumberFound = false;
foreach ($x as $item) {
if ($item === $y) {
$isNumberFound = true;
break;
}
}
return $isNumberFound;
}
$a = 'qweq';
$arr=[1,2,3,4,'q','qweq','r','t','y'];
echo fun($arr, $a ) ? '$a присутствует в массиве' : '$a не присутствует в массиве';
//Напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.Функция возвращает
//число вхождений числа в массив.Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
function fun1(array $x, $y)
{
$i = 0;
foreach ($x as $item) {
if ($item === $y) {
$i++;
}
}
return $i;
}
$a1 = 'q';
$arr1=[1,2,3,4,'q','q','q','r',1,'y'];
echo '</br>' . 'Число вхождений числа в массив = '. fun1($arr1, $a1 );
/*Напишите функцию,
принимающую на вход 2 аргумента - массив и какое-либо значение.
Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.*/
function searchInArrValue(array $arr, int $value): bool
{
$isNumberFound = false;
foreach ($arr as $item) {
if ($item === $value) {
$isNumberFound = true;
break;
}
}
return $isNumberFound;
}
$values = [1, 2, 3, 4, 5, 6, 7, 8, 9];
echo searchInArrValue($values, 7) . '<hr>';
Вторую функцию сначала реализовал без continue, перечитал тему и допёр как сделать с ней =)
/*Напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
Функция возвращает число вхождений числа в массив.
Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.*/
function findNumberOccurrences(array $arr, int $value): int
{
$count = 0;
foreach ($arr as $item) {
if ($item !== $value) {
continue;
}
$count++;
}
return $count;
}
$values = [1, 2, 1, 3];
echo 'Кол-во вхождений: ' . findNumberOccurrences($values, 1);
Спасибо за урок. Надеюсь у меня правильно получилось.
Читайте задание внимательно, пожалуйста. Сказано написать функцию. Как у нас определяются функции? С помощью слова function. В вашем решении я этого не вижу.
Теперь всё верно, отлично! Что со вторым заданием?
second:
Коммент для будущих поколений:
Вариант рабочий, но не самый оптимальный. array_count_values под капотом идет и считает для каждого элемента число совпадений.
При этом каждый раз, когда находится новое число, добавляется элемент в массив со значением элемента в качестве ключа.
И получается что мы расходуем память на лишние элементы, которые нам неинтересны.
Решение работает, повторюсь, и на небольших массивах будет работать довольно быстро. Но если брать массив с миллионом значений, то будет уже очень большой разрыв в производительности.
Смотрите ниже в комментариях вариант с foreach - он более оптимальный.
Вот теперь идеально!)
По по первой задаче - break после return не имеет смысла.
По второй:
В целом всё хорошо и логично, имена функций тоже норм :)
Так что-ли?
Да, всё верно. Привыкайте использовать типы аргументов в функциях:
фигурная скобка для тела функции ставится на новой строке:
Не совсем понял смысл задачи
Всё правильно)
Только не нужна вам здесь переменная $num:
Так что-ли?
Нет, нужно было просто передать число 1 вторым аргументом. А у вас в коде зачем-то в переменную перед этим складывали, которая нигде не использовалась.
Вот так должно быть в конце:
Домашка №1:
Домашка №2:
Отлично! Не забывайте про типы аргументов и типы возвращаемых значений.
Спасибо за еще один клевый урок!)
Тут всё хорошо. Очень быстро осваиваете материал, у Вас отличные способности к программированию!
Большое спасибо!
Я очень стараюсь и все задания делаю без "подсказок" из комментов, так продуктивнее и интереснее =)
2)
Ну а за то, что код работает - ставлю 5 =)
1.
2.
У аргументов функций должны быть указаны типы! У функций должны быть указаны типы возвращаемых значений. Всё это было в уроке про функции.
Что-то я не увидел в уроке про функции как указать у функции типы возвращаемых значений.
Действительно, как-то я упустил это. Спасибо =)
не пойдет - если передать массив:
1, 3, 5
и число:
3
то вернёт false, несмотря на то, что число в массиве есть
не работает
Норм
Выдает ошибку, не пойму почему...
Какую ошибку?
( ! ) Fatal error: Uncaught TypeError: Return value of arrayCheck() must be an instance of boolean, boolean returned in C:\openServer\OSPanel\domains\myproject.loc\www\index.php on line 32
( ! ) TypeError: Return value of arrayCheck() must be an instance of boolean, boolean returned in C:\openServer\OSPanel\domains\myproject.loc\www\index.php on line 32
$i = false;
function arrayCheck (array $array, int $x): bool
{
foreach ($array as $value){
if ($value === $x) {
$i = true;
break;
}
else {
$i = false;
}
}
return $i;
}
arrayCheck([3,4,6,8,9,0],0);
echo $i ? 'число найдено' : 'Число не найдено';
не работает, а понять почему не могу
Потому что нужно писать : bool а не : boolean
Хорошо. Но перед циклом стоит явно задать $number = 0
Почему нет типов у аргументов в функциях, как в уроке?
В первой задаче функция должна возвращать булево значение, а не выводить что-то.
Имена переменных должны быть с маленькой буквы.
После $IsNumberFound = true; нужно делать break, так как дальше можно не искать.
После return не имеет смысла делать break - функция завершает свое выполнение.
В остальном всё хорошо =)
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
Всё супер!
Не надо false и true капсом) А так - отличная домашка. Можно еще указать типы возвращаемых значений для функций.
первое задание
второе задание
// напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
// Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение.
// Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
возникли непонятки с циклом foreach ($massive as $key => $index)
в первом случае я писал условие: foreach ($massive as $key), отработало все хорошо вроде как, а вот во втором случае никак не хотел работать foreach ($massive as $key). в примерах у нас есть выражения без $index, но прогнав цикл через var_dump(), я увидел что в некоторых индексах масива потерялись значения, писало типа Null, хотя там Int.. как так, хз...
разобрался, в коде было 2 функции, помогло - unset($value);))) иногда полезно читать)
Почему не указаны типы аргументов функций? Перечитайте урок про функции.
По первой задаче:
Индексом называют ключ массива. У вас же $index - это значение, правильнее будет назвать его $value или $item. Кроме того, здесь можно обойтись более простой конструкцией, без ключа:
По второй - тернарный оператор используется неправильно. Он нужен, когда результат его выполнения будет использоваться. Пример:
В этом примере результат из правой части будет присвоен $x. В вашем же случае правильнее использовать if.
Второе задание:
Здесь не сравнение происходит (===), а присваивание (=) значения true.
В результате всегда будет выводиться фраза "число найдено в массиве".
Указывайте типы аргументов и типы возвращаемых значений.
ок
P.S. И то и то работает, это уже хорошо. Но читать такой код другим программистам будет очень сложно.
Перепутал переменные, переделаю.
Переменные, объявленные вне функций, внутри функций не будут видны. Где вы такие примеры увидели?
$count должно быть объявлено внутри тела функции! В первом примере аналогично.
Ох намучился я с синтаксисом, то запятую пропущу, то скобку не там вставлю.
Функция должна вернуть булево значение. У аргументов должны быть типы.
Функция должна вернуть целое число. У аргументов должны быть типы.
Отлично!
После return не нужен break. После return функция завершает свою работу.
true и false пишутся с маленькой буквы.
У аргументов функций должны быть указаны типы!
Первое задание:
Второе задание:
Хорошо, но не хватает типов аргументов функций. Привыкайте их указывать.
Поиск числа в массиве
Поиск вхождений
Хорошо, но не указаны типы аргументов.
Первое:
Второе:
Вооот так тогда.
Первое:
Второе:
Хорошо. false не надо в скобки заворачивать.
Точно! Спасибо)
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
Ок. В первом примере return true можно вынести за блок else, а блок, соответственно, вообще убрать.
Понял, ок.
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
Отлично
Задание 1:
Задание 2:
возникнет ошибка.
Кроме того, вместо того чтобы помещать одно и то же число в массив а затем считать число элементов в нем, лучше просто завести переменную со счетчиком вхождений.
Спасибо за поправки!
Тогда с учетом замечаний получается так.
Задание 1:
Задание 2
Теперь отлично
Можно ли первую функцию написать так?:
Отлично.
Можно, только в конце обязательно должен быть return false.
Первая задачка
Нет здесь двух аргументов. Один есть, но и тот необязательный - в функцию не передается ни одного. Пересмотрите урок!
Кажется разобрался с передачей аргументов в функцию, так?
Только вызов вот так:
Вы на питоне до этого писали что ли?
Ой, напутал сори, это я правил то что мне сын подсказал. А он да - на питоне кодит :)
Понятно, там другой синтаксис. В PHP, когда вы пишете
Сначала создаётся переменная array со значением переданного массива, потом переменная i, со значением 13, а затем эти переменные передаются в функцию. Первые два шага, как вы понимаете, нам не нужны.
вторая:
Аргументы должны передаваться при вызове функции
Эстетичнее было бы написать массив вне функции, а в него передать только название) $i = 0 при вызове функции тоже не нужно, просто через запятую указываешь число)
не совсем понял а нужно ли нам использовать оператор continue в второй задачи
Код:
$arrays - неподходящее название для элемента массива.
1 задание (фуух, не сразу получилось):
2 задание сам не смог сделать, только посмотрев как другие делали - понял что вроде ничего сложного
так?
Супер!
Не указаны типы аргументов.
Это что такое
Где вы научились в одну строку лепить? В моих уроках такого безобразия не было.
Функция должна возвращать булево значение, а не выводить строку!
Со второй функцией аналогично.
Выводить ничего не надо.
Комментариев с неисполняемым кодом быть не должно.
??? Просто:
А то получается - если тру, то тру, иначе - фолс. Хотя в переменной уже лежит одно из этих значений.
спасибо, думал на счет return забыл попробовать. комменты тоже забываю удалять постоянно
Отлично!
По второй задаче - более оптимальным решением будет просто увеличивать счётчик при каждом нахождении числа.
P.S. разбивайте комментарии - одна задача, один комментарий. И используйте оформление кода - кнопка слева вверху в окне добавлении комментария.
//о, а я думал как же самому сделать читаемый код в комментах
Отлично!
Второе задание
Где типы аргументов?
Всё должно быть в виде функций
Функции должны возвращать значение, а не выводить его. У аргументов функций обязательно нужно указывать типы!
Что с оступами? Почему всё пляшет? Делайте как в моих примерах.
Имена функций пишутся с маленькой буквы.
Должны быть указаны типы аргументов.
Скобка, открывающая тело метода, должна быть на отдельной строке.
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.
И где функция?
Поправил
Нужно указывать типы аргументов
напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.
Нужно указать типы аргументов
Во втором задании нужно было посчитать число вхождений, а не сумму чисел.
Поправил)
Теперь ок
Упустил момент, оказалось сверху окно ввода, в коде ошибок не на делал?
Функция должна возвращать значение, а не выводить строки. У аргументов функции должны быть типы.
Где типы аргументов функции?
Поправил. Спасибо за замечания, нужно привыкать на каждую мелочь обращать внимание.
Отлично
Задание 1.
Задание 2.
Поправил.
Ок
Отлично
Добрый день,возник вопрос по уроку,немного непонятен этот момент
Как здесь работает вопрос и почему два значения через двоеточие,я что-то упустил этот момент.
Я прочёл офф документацию,там как раз описывается этот момент в true и false. Теперь всё понятно.
Отлично
Отсутствуют типы аргументов. Дальше даже смотреть не буду, пока не сделаете как в уроке.
Супер! Отступы только пляшут. Выравнивайте их.
//Задание 1
//Задание 2
Для чего во втором задании continue?
В обоих решениях не указан тип второго аргумента функции.
Так в заданиях же сказано массив и переменная, которая принимает "какое-то значение", а вдруг массив будет с строковыми элементами? Насчет continue, честно говоря, подумал, что для усвоения материала было бы неплохо написать ( и что именно так и нужно было)
Прошу прощения. Значение действительно должно быть любым. А continue не несёт никакого смысла в данном примере. После этой строки и так произойдет переход к следующей итерации.
Имело бы смысл написать так:
Понял, спасибо!
А сможешь сделать с использованием break и continue?
попробую
с break и continue
Вот это для чего делается?
В чём смысл continue во втором решении? Без него не перейдет к следующей итерации?
да, else {
$isNumberFound = false;
}, это лишнее и без него работает
и, да без continue тоже считает. по поводу continue не совсем поняла
Если интересно как сделать с использованием continue:
Как же я задолбался с 1м заданием, это просто... Долго не мог понять как вывести 'true' или 'false' один раз, а не все подряд)
А выводить ничего не надо. Перечитайте задание.
Где типы аргументов? Проходите урок по функциям снова.
Вот так?
Хотел поинтересоваться: уже не первый урок замечаю, что при сравнении чисел используется оператор тождественности (===) вместо обычного равенства (==). По идее же в предыдущих уроках говорилось, что операторы равенства приводят операнды к одному типу, а оператор тождественности наоборот проверяет типы операндов. В чем необходимость проверять в условии помимо самого значения еще и тип данных?
Так более надёжно, приучает всегда думать о том, с какими данными мы работаем.
В принципе я сам немного понял ответ для своего предыдущего вопроса, попробовав усложнить первую задачу тем, что в массиве присутствует несколько типов данных (не знаю, кстати, какой тип данных тогда указывать в определении функции, т.к. вы меня в прошлых дз просили это делать).
И если сравнивать не тождественно, то тогда получается, что при поиске строки 'приветик' интерпретатор просто переводит строку в другой тип данных и выдает, что значение найдено, хотя его в массиве не присутствует. Но при тождественном сравнении, все проходит корректно и функция возвращает false. Хотелось бы полностью разобраться как и почему это происходит, либо же получить наводку, где это можно изучить. Заранее спасибо
Функция, принимающая в качестве аргумента всё подряд - это плохая функция. Исторически так сложилось, что PHP позволяет это делать. Но сейчас все стараются писать со строгой типизацией. Так просто меньше ошибок.
Понял, учту в следующих заданиях. Спасибо)
Здрасьте еще раз! ДЗ проверьте пож?
Где типы аргументов?
Скобка, открывающая тело функции, пишется на следующей строке.
Первая функция не должна возвращать строку.
Переменные с префиксом is... используются для булевых значений.
Кстати, хотел узнать, что лучше использовать for или foreach? Что менее затратно для сервера и обработки?
Использовать array_key_last($x); вместо count() - то ещё извращение. Да и зачем здесь for вместо foreach, тоже непонятно. В программировании нужно всё упрощать, а не усложнять.
По вашему вопросу - разницы нет. Нужно использовать то, что больше подходит.
Хорошо, спасибо, буду знать!
Пожалуйста. Рекомендую переделать ДЗ с учётом рекомендаций.
Ок. Только для массива тоже нужно указать тип аргумента.
function isNumberInArray(int $arr, int $number) - ок! спасибо.
Отлично
Имена функций пишутся с маленькой буквы!
Тип первого аргумента не указан.
Зачем во втором задании continue? Функция не должна возвращать строку, перечитайте задание.
подправил
Супер!
В первом задании использовал break для домашнего задания, код у меня получился большим. Первым делом написал функцию без break и такой вариант больше понравился =)
1.
Можно просто
В целом всё ок, но названия переменных x и y ни о чем не говорят, их стоит заменить на что-то, имеющее смысл.
А почему так не работает? $i остается равным 0.
ДЗ не выполнено. Нужно было написать функции.
Конкатенация строк выполняется с помощью точки, откуда вы взяли запятую?
Вот функции:
Из какого-то из прошлых уроков. Не помню. Работает же.
Где типы аргументов? Имена функций пишутся с маленькой буквы. Скобка, открывающая тело функции, пишется на следующей строке. В задании сказано что функция должна возвращать значение, у вас она ничего не возвращает.
Советую начать курс с самого начала и быть более внимательным. Как в изучении материала, так и в выполнении ДЗ.
Неправда. Не было такого.
Если будете вместо конкатенации продолжать писать запятые, будете сами проверять домашние задания :) Я же написал вам, что нужно использовать точку, вы мне в ответ на этот комментарий опять запятую пишете. Что за неуважение? :)
Типы аргументов в данном случае только мешают. Какие мог, объявил. Если не объявил - значит при объявлении типа ломается код.
По поводу остального, я слишком ограничен по времени, чтобы отслеживать, где там точка и с какой строки скобка. Моя цель не стать разрабом. Мне достаточно рабочего кода. Не хотите, не проверяйте :)
Ок, если не собираетесь эти навыки применять в работе, то моя душа спокойна) Делайте что хотите и как хотите)
Смотря что понимать под работой. Мне надо научиться управлять базой данных и уметь админить сайт. В перспективе это должен быть онлайн-магазин, возможно, с форумом.
Вот первое задание:
После return ничего не выполнится, смысл в break?
Где типы аргументов?
Добрый день!
Ошибся, исправил.
Второе задание
Второй вариант
Решение второго задания не самое оптимальное. Вместо того чтобы посчитать только число вхождений нужного элемента, считается вхождение для каждого - а это лишняя работа.
Супер! Только скобка, открывающая тело функции, пишется на следующей строке.
Спасибо, учту
Первое задание (отредактировано - сам у себя же ошибку нашёл):
Нужно указать тип аргумента для $arr.
Что за $get? Назовите более подходящим именем.
Функция не должна ничего выводить. Только возвращать.
Пробел после getNumber не нужен.
Второе задание:
Те же ошибки
Лишний пробел. Тип первого аргумента не указан.
Опять непонятное имя $get. Почему метод нормально назвали, а переменную как попало?
Лишний пробел
Для чего? Что это даёт?
Спасибо, исправил))
Красота! Так держать!
CTRL+ALT+L! Закрывающий тег не нужен!
Имена аргументов никуда не годятся. Перечитайте урок про переменные, в частности о том, как нужно их именовать.
searchArrayFunction - не нужно к имени функции добавлять слово Function
$arrayFunction - не указан тип аргумента, значение по умолчанию для подобной функции не уместно.
Фигурная скобка, открывающая тело функции, переносится на следующую строку.
Имена переменных никуда не годятся.
Функция по заданию не должна ничего выводить, она должна только возвращать.
Зачем на каждой итерации задавать одно и то же значение? Это нужно сделать один раз еще до начала цикла.
Должно возвращаться булево значение, а не строка!
В целом домашнее задание сделано ужасно. Думаю, сказываются большие перерывы в вашей практике. Домашнее задание к уроку по функциям было сдано больше месяца назад. С таким подходом ничего не получится.
Перерывы связанны из за временных трудностей в учёбе. Буду исправляться :)
Пойду поиграюсь ещё с кодом :D
Спасибо за урок! :)
Пробел после запятой. Фигурная скобка на следующей строке.
$valueNumber - правильнее назвать $count
куда-то вправо уехало, нужно выровнять.
В целом алгоритм ОК
{ - на новой строке!
В остальном отлично
Отлично!
Результат:
Число найдено
Количество совпадений - 2
Можно ещё концовку поменять на:
Скобка, открывающая тело функции, пишется на новой строке.
Не нужно сравнивать с true, если там true, условие и так выполнится
Всё исправил:
Отлично
Некорректное имя для переменной $index, лучше назвать $item
Заведите для результата отдельную переменную. Зачем в аргумент функции результат складывать?
Неправильно работает, всегда возвращает false.
По второй задаче то же замечание про имя переменной, но функция работает.
Создается ощущение, что я сделал что-то не так, поскольку ни continue, ни break в данном задании не увидел, где бы можно было применить.
Оговорюсь сразу, что тип второго аргумента что в первом, что во втором задании не указывал специально, поскольку посчитал, что в массивах значения могут быть разноплановыми, так что эти функции можно применять для поиска не только чисел
Отлично. Функции работают. Решения с break и continue можно посмотреть в комментариях.
Супер!
Отлично
1 задачка
2 задачка
И для 1 задачки необязательно я так понял ставить break, потому что если что-то true - программа сама останавливается и возвращает true
Функции не должны ничего выводить.
Скобка, открывающая тело функции пишется на следующей строке.
По логике всё ок.
Выводить, в смысле, в функции не должно быть echo? Или возвращать не должны ничего? Просто не понял
Выводить) можете просто перечитать задание, там написано что нужно делать функции. Лишних действий в нее добавлять не надо)
Добрый день!
Где типы аргументов??
Для блоков if-else всегда пишутся фигурные скобки.
Замените на
Доброе утро!
Тип аргумента не указали
В остальном ок
Задача 1
Написал так : ? 'true' : 'false', потому что без этого у меня выводиться просто 1. А если с функцией var_dump() то выводиться bool(true). А так тут просто как в задании true.
Задание 2
ifIsVariable правильнее назвать hasValue
В задании речь была только о том, чтобы функция возвращала это значение, что вы и сделали. Выводить можно var_dump-ом.
В целом отличная домашка.
Функции не должны ничего выводить, они должны возвращать.
Всё ок, только фигурная скобка, открывающая тело функции, пишется на следующей строке.
1.
2.
Отлично
Где типы аргументов?
При $search = 12; возвращает false
Отлично!
И оформление делайте как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
1.
2.
Где типы аргументов?
Для чего?
Функция по заданию должна только возвращать true/false, ну нужно ничего выводить.
Почему не возвращается false, если ничего не найдено?
Для чего?
$isNumberFound - почему такое название для переменной с числовым значением? is для boolean применяется.
нужно заменить на
Лишний перенос
На троечку с минусом домашка.
Поправил, проверь, пожалуйста.
Теперь отлично
добавил типы аргументов
Где типы аргументов?
Расскажите подробно, для чего здесь:
попробовал без этих двух строк, работает... получается задание решается без применения темы урока
Можно решить как у вас, да. А можно и с их использованием. И всё же, для чего вы их написали? И когда исправите типы аргументов?
когда знаний недостаточно, для решения задания применяется в том числе метод "тыка", так и появляются ненужные строчки кода..
код исправил, типы аргументов добавил
Теперь ок
Где типы аргументов?
Я уже устал от того, что ваш код каждый раз не отформатирован. Оформление делайте как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Пробел здесь обязателен!
Где типы аргументов?
Уберите лишние переменные, зачем они здесь?
Где типы аргументов?
Проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Функции должны возвращать, а не выводить, перечитайте задание.
Спасибо, замечания по делу были
<?php
//первое задание
function checkNumber(array $array, int $intCount)
{
$trueOrFalse = false;
foreach ($array as $value) {
if ($value == $intCount) {
$trueOrFalse = true;
break;
}
}
return $trueOrFalse ? 'true' : 'false';
}
$array = [37, 1, 4, 6, 6, 4, 7, 90, 37];
$intCount = 4;
var_dump(checkNumber($array, $intCount));
<?php
//второе задание
function checkSumOfNumber(array $arrayCont, int $number)
{
$sum = 0;
foreach ($arrayCont as $value) {
if ($value == $number) {
$sum++;
continue;
}
}
return $sum;
}
$arrayCont = [1, 2, 1, 4, 3, 1];
$number = 1;
var_dump(checkSumOfNumber($arrayCont, $number));
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.
Первая функция должна возвращать булево значение, а не строку.
И проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Отлично. На досуге почитайте что-нибудь про именование переменных
Задача 3:
https://codingzone.io/problems/3/solution/409
Как засунуть данные из строки в массив нашел на php.net, но раз такое в задании, то стоило бы об этом рассказать в уроке
Задача 4:
https://codingzone.io/problems/4/solution/411
Код конченный, но по другому я не придумал, буду рад узнать правильную версию кода :)
а еще когда я в шторме писал && вместо and, то ничего не работало
Потому что там не && нужен, а запятая. Прочитайте в документации дополнительно про цикл for.
Нет, в этом и смысл, учитесь самостоятельно искать необходимую информацию. В уроках - минимальная база. Программисту же нужно учиться гуглить.
После имени функции пробел не ставится.
Перед началом цикла переменную $count нужно определить. К чему инкремент-то применять, если переменная впервые по коду встречается.
Проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L.
Такой код у меня вышел спустя где-то минут 30 отладки, сначала получалось что вместо 6 первых хначений выводит 12, потом вместо 6 выводило 7, был момент что для 6 первых значений выводило 6, а для 3 выводило 4. И только такой вариант как я скинул начала работать похоже на то, что в задании
стоп, у меня же определена переменная перед началом цикла
Она объявлена вне функции, и внутри функции недоступна
понял
Скобка, открывающая тело функции, пишется на новой строке.
Задание 1
Задание 2
Задание 3 - https://codingzone.io/ru/problems/3/solution/573
Задание 4 - https://codingzone.io/ru/problems/4/solution/580
Жаль, что на CodingZone нельзя посмотреть какое-нибудь образцовое решение, а то у меня задание с числами Фибоначчи через одно место получилось, а как-то по-другому сделать у меня ума не хватило.
Решение вполне ок, но можно обойтись одним циклом. Ок, я постараюсь добавить "образцы" на CodingZone
Где тип второго аргумента?
Тип аргумента потеряли. В рамках одного урока достаточно одного комментария со всеми решениями. Мне так проще будет проверять.
Понял, буду в одном комменте. По типу аргумента, так там можно ожидать и int и str, должно сработать в обеих случаях, не знал какой поставить.
А, сорян, уже сам забыл задание) Всё в решении отлично
Ссылку на решение, пожалуйста, чтобы я видел, что все тесты прошли.
https://codingzone.io/ru/problems/3/solution/736
Супер!
1 Задание
Все пытаюсь понять какой цикл лучше использовать, поэтому извиняйте за 3 варианта )))
В данном случае цикл foreach более оптимизирован получается, так как сам перебирает массив, правильно я понимаю?
2 Задание
3 Задание
https://codingzone.io/problems/3/solution/1193
4 Задание
https://codingzone.io/problems/4/solution/1202
Где типы аргументов?
Скобка, открывающая тело функции, пишется на новой строке.
Для чего здесь присваивание в переменную $array?
бессмысленное сравнение в рамках условия - выражение всегда будет приводиться к boolean. Получается что вы проверяете сравнение (true == true), вместо того чтобы сразу проверить значение (true).
Что это вообще? Нормально же с foreach писали :)
Всегда используйте фигурные скобки для блоков if-else.
3 задание - foreach, зачем всё это городить
4 задание
Для чего просто скопировали значение?
+ Проблема с форматированием во всех заданиях. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
В целом ощущение, что все предыдущие уроки вы не проходили а пришли на этот урок с каких-то других курсов типа гикбрейнс. На этом уроке таких ошибок уже быть не должно. Я бы на вашем месте начал с самого первого урока и выполнял все ДЗ, заодно сразу исправляя ошибки по моим комментариям.
Вроде бы все исправил:
1 Задание
2 Задание
3 Задание
https://codingzone.io/problems/3/solution/1282
4 Задание
https://codingzone.io/ru/problems/4/solution/1281
Гикбрейнс? Улыбнуло )))
На самом деле все проще - по PHP кроме вашего курса, только до этого пробовал читать сразу мануалы с php.net, но понял, что тяжеловато дается, нужно более разжеванней. Но когда начал курс, с каждым уроком не стал вываливать свое дз, а просто сравнивал свое решение с уже другими в комментариях. Хотя зря, как раз на эти ошибки вы бы уже и указали ранее. Виноват - исправлюсь! :-D
Отлично, быстро исправили
Вот тут только опять с true сравнение. Функция уже boolean возвращает
Ааа, все дошло... )))
Спасибо большое за ваши комментарии! Постараюсь учесть все в дальнейшем.
Отлично. Только отвечайте в уже существующую ветку комментариев, а не создавайте новую.
Первое задание
Второе задание
Третье
https://codingzone.io/problems/3/solution/1541
Четвертое
Здесь не добился положительного результата. Вроде как и результат правильный должен быть, но не пропускает система...
https://codingzone.io/problems/4/solution/1542
Должно возвращаться булево значение, а не строка.
Зачем break после return?
Блок else не нужен уже, если первый if выполнится, функция завершит работу.
А зачем ещё один массив, вместо того чтобы завести переменную с числом вхождений?
По поводу четвёртого - вы в курсе про кнопку show details?
Спасибо за помощь!
Первое задание после правок
Второе после правок
По поводу четвертого.)
Кнопку видел и нажимал.
Выдает ошибку The expected output is different from the actual. Check your algorithm.
Также пишет, что нет ИНПУТ параметра, но я же его никуда не девал.
Он определен, как я понял, по умолчанию - $line = trim(fgets(STDIN));
А ОУТПУТ - судя по тестам в IDE код должен работать и выдавать ожидаемую задачей последовательность (0 1 1 2 3 5). Не могу понять. Пока двинусь дальше.
https://codingzone.io/problems/4/solution/1646
Теперь если ничего не найдено, функция ничего не вернёт. А нужно false.
После foreach лишний перенос строки.
Перечитайте второе задание. Функция должна возвращать значение, а не выводить.
В смысле нет инпута? Там число 0 на входе. Значит нужно вывести 0 первых элементов. То есть ни одного. То есть ничего не выводить, если 0 пришел.
Где типы аргументов?
Ну ерунда ведь полная
Перечитайте урок по функциям.
Здесь нужно было написать только 2 функции.
А самому подумать? В этом смысл домашки)
Понял свою ошибку, после функции return функция завершает свою работу, то есть проходит true, и происходит возвращение. В одной функции нельзя же писать 2 раза retutn...
А что если как вариант выставить return false; за пределы. По идеи так будет корректно работать?
Если я не в ту сторону мыслю опять, то дайте пожалуйста знать. Хочу уже перестать путаться)
Теперь совершенно правильное решение. Только типы опять не указали
Не совсем понял, где именно типы пропустил указать, подскажите пожалуйста((
Типы аргументов у функции. Перечитайте урок по функциям
Где типы аргументов?
Добавил типы аргументов
Артем, добрый день!
Как такой вариант решения 4 задачи?
Помучился знатно, код проверки прошел, но т.к. отличается от варианта решения, хотел бы узнать Ваше мнение)
И еще один вопрос, у меня в браузере ошибки выводятся просто текстом а не цветной таблицей и массивы пишутся в строку. Попытался гуглить, но вразумительного ответа не нашел, может подскажите в какую строну и что смотреть?)
Привет. Да отличный вариант. Только проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Это раскрашивается xdebug-ом https://xdebug.org/docs/display
Ctrl+Alt+L постоянно нажимаю, вставил данный код специально в шторм и нажал комбинацию, только добавилась пустая строка перед последней строчкой с функцией. Поэтому и понял, что фигурные скобки у функции переносятся, а у циклов и условий на одной строке.
Отступы у for и закрывающей скобки foreach не на своих местах.
Привет, 1 задание
Артём, скажи, почему если использовать для вывода ответа var_dump, ответ выводится, а если echo, то выдаёт пустую страницу?
Задание 2
Задание с сайта Чётные числа
Отлично. Это необязательно скидывать, если все тесты прошли
Имена функций пишутся с маленькой буквы
Потому что false при выводе преобразуется в пустую строку
Понятно, спасибо.
Имена функций пишутся с маленькой буквы
Не могу не похвастаться решением задачи про числа Фибоначи! ;)))))
Я себе весь мозг сломала, прикидывая и так и эдак, как решить задачу. А ларчик просто открывался! :))))
Всё по логике отлично, но опять проблемы с форматированием кода. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Где тип аргумента $x?
$i - не самое подходящее название.
А это для чего?
Что выведет, когда значение не найдено?
Со вторым заданием аналогично.
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Тип аргумента не стала указывать у $x, чтобы функция была применима для разных типов. (хотя изначально указала)
continue использовала, чтобы применить как-то операторы из урока. Потом в примере уже посмотрела, что он там абсолютно не нужен)
Для выведения значений поправила код и взяла в кавычки true и false.
Про отступы учту
Зачем в кавычки? Функция должна возвращать булево значение. А в кавычках это уже строки будут)
Зато видно, что true или false =D
Убрала кавычки, и сменила echo на var_dump.
Теперь отлично) Только else с continue нужно убрать
вопрос по первому заданию. в уроке есть уже готовое решение. взять это решение и сделать функцией или есть др варианты решения этого задания?
вполне вариант
Где типы аргументов?)
Функция по заданию не должна ничего выводить, она должна возвращать.
Пара вопросов.
В шторме в настройках укажите вместо 5.6 свою реальную версию.
Ну да, рекомендую повторить урок по функциям, раз такие вопросы возникают.
2
camelCase, no underscores_names
Перечитайте условия задач. Функции всегда должны возвращать значение.
забыл добавить в конце return $count;
В первой задаче тоже. Функции именуются в camelCase, никаких подчеркиваний быть не должно.
Написанное не соответствует заданию. Кроме того, урок по функциям судя по всему пропустили.
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.
Извините,не разобрался,поправил
Всегда используйте фигурные скобки для блоков if-else.
Скобка, открывающая тело функции, пишется на новой строке.
И оформление делайте как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Ну и функция работает неправильно. Если сделать
то вернет false.
Выводить булево значение стоит с помощью var_dump а не echo.
Отлично!!!
1)
2)
Нужен ли здесь break?
Нет, его там не должно быть, т.к. return true.
Моё решение задачи "Чётные числа" почему-то не прошло тест с данными '7 13 99',
а в брузере результат корректен...
Нажмите кнопку "детали", там будет написано что именно пошло не так.
Детали
Input:
7 13 99
Ожидаемый output:
Актуальный output:
Notice: Undefined variable: arr in /app/code-3422890021211985578.php on line 10
Warning: implode(): Invalid arguments passed in /app/code-3422890021211985578.php on line 10
(Обратите внимание: неопределенная переменная: arr in /app/code-3422890021211985578.php на линии 10
Предупреждение: implode(): недопустимые аргументы, переданные в /app/code-3422890021211985578.php на линии 10)
Однако, смысл всё равно не ясен.
Десятая строка в моём коде: $str = implode(' ', $arr);
В браузере код работает корректно...
(Разумеется, вторая строка выводимого в браузер кода имеет вид: $line = '7 13 99'; как и откуда извлекать данные по STDIN тоже пока не известно)
Значит у вас в php.ini не включен показ ошибок уровня NOTICE.
Ошибка возникает из-за того что переменная $arr не определена в тот момент, когда она передается в функцию implode
Отлично!
Нужно указать типы аргументов
Всегда используйте фигурные скобки для блоков if-else.
Поправила
Отлично
Нужно указать типы аргументов
Первая функция должна возвращать булево значение, а не строку
Я вначале возвращал просто true/false, просто при выводе показывало 1 либо 0, для удобства сделал чтобы строкой выводило true/false.
Используйте в таком случае для отладки var_dump вместо echo
Тут всё ок, кроме отступов. Ну и тип аргумента не указан
тип аргумента вот тут?
Аргумент - то что в скобках
Спасибо
Не забывайте про типы аргументов.
Принято, спасибо)
Фибоначчи, это просто взрыв мозга.
Получилось?
К сожалению пришлось посмотреть ответ, когда его увидел вроде ничего сложного нет, но повторить через 10 минут не смог. Парадокс!!!
Ознакомьтесь с решениями в комментариях. Возможно более понятный вариант найдется
###Число в массиве?
Функция по заданию не должна ничего выводить, она должна возвращать.
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
##Кол-во вхождений
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Функция по заданию не должна ничего выводить, она должна возвращать.
Добрый день. 3я задача прошла проверку на сайте. С фибоначчи не смог решить. Посмотрел решение.
вовсе не пустой
для чего это?
ifNumberFoundInArray должно начинаться с is... а не if...
Функция должна возвращать булево значение а не строку
ifNumberFoundInArrayAndHowManyTimes - неподходящее название. Функция должна вернуть только число вхождений, дополнительно она не возвращает найдены числа или нет.
FindEvenNumbers - имена функций пишутся с маленькой буквы
Спасибо за замечания. Поправил.
По поводу 1ой задачи изначально у меня было тоже просто return true/false, но echo отображал в браузере 1 (для true) и ничего (для false). Я проверил var_dump и возвращалось нормально булево значение, но я подумал что нужно чтобы в браузере писалось true/false. Поэтому написал строку. Не внимательно задачу прочитал.
не указан тип аргумента
тут лишний перенос
можно упростить до
во втором задании анологично.
Но это уже так, небольшие улучшения. В целом всё хорошо.
Вроде работает
Отлично
Это не индекс, это значение. Название должно соответствовать действительности.
Непонятно для чего 2 взаимоисключающих условия, нужно оставить одно:
Надеюсь что в этот раз всё правильно
Имена функций ни о чем не говорят. Блоки foreach всегда нужно оформлять внутри фигурных скобок
Первая функция:
Вторую функцию сначала реализовал без continue, перечитал тему и допёр как сделать с ней =)
Спасибо за урок. Надеюсь у меня правильно получилось.