Этот урок набрал набрал достаточно большое количество комментариев и дальнейшее его комментирование отключено. Если вы хотели убедиться в правильности выполнения ДЗ или у вас возник вопрос по уроку, посмотрите ранее добавленные комментарии, кликнув по кнопке ниже. Скорее всего вы найдете там то, что искали. Если это не помогло - задайте вопрос в чате в телеграме - https://t.me/php_zone
SBTesla 04.01.2018 в 12:48
<?php
function hasInArray(array $array , int $num )
{
    foreach ($array as $item) {
        if ($item === $num) {
           return true;
        }
    }

    return false;
}
ivashkevich 04.01.2018 в 14:32

Читайте задание внимательно, пожалуйста. Сказано написать функцию. Как у нас определяются функции? С помощью слова function. В вашем решении я этого не вижу.

ivashkevich 08.01.2018 в 13:04

Теперь всё верно, отлично! Что со вторым заданием?

Dasgonder 08.01.2018 в 14:39
second:
function valueCount ($array, $value) {
    $count = array_count_values($array);
    if (array_key_exists($value, $count)) {
        echo "{$count[$value]} values has found in array";
    } else {
        echo "Value not found";
    }
}

$exampleArr = [1, 2, 1, 3];

valueCount ($exampleArr, 1);
ivashkevich 09.01.2018 в 19:40

Коммент для будущих поколений:
Вариант рабочий, но не самый оптимальный. array_count_values под капотом идет и считает для каждого элемента число совпадений.

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

Решение работает, повторюсь, и на небольших массивах будет работать довольно быстро. Но если брать массив с миллионом значений, то будет уже очень большой разрыв в производительности.

Смотрите ниже в комментариях вариант с foreach - он более оптимальный.

Dasgonder 09.01.2018 в 00:57
//foreach ver
function valueCount($array, $value) {
    $result = 0;
    foreach($array as $temp) {
        if($temp == $value) {
            $result++;
        }
    }
    echo "value found {$result} times";
}

$exampleArr = [1, 2, 1, 3];

valueCount($exampleArr, 1);

//edited foreach-return ver
function valueCount($array, $value) {
    $result = 0;
    foreach($array as $item) {
        if($item == $value) {
        $result++;
        }
    }
return $result;
}

$exampleArr = [1, 2, 1, 3];

echo "value found ". valueCount($exampleArr, 1) ." times";
ivashkevich 09.01.2018 в 05:09

Вот теперь идеально!)

Andreo 17.01.2018 в 11:35
<?php
$arr = [27, 32, 44, 48, 12, 95, 26, 68];
$x = 12;

function searchNumber($x, $arr)
{
    foreach ($arr as $item) {
        if ($item == $x) {
            return true;
            break;
        }
    }

}

var_dump(searchNumber($x, $arr));

$arr = [27, 32, 44, 48, 12, 95, 26, 68, 12, 67, 46, 12];
$x = 12;

function countOfInsides($x, $arr)
{
    $result = 0;
    foreach ($arr as $item) {
        if ($item !== $x) {
            continue;
        } else $result++;
    }
    return $result;
}
echo countOfInsides($x,$arr);
ivashkevich 18.01.2018 в 19:31

По по первой задаче - break после return не имеет смысла.

По второй:

  1. после else и if всегда идёт блок в фигурных скобках
  2. здесь else не нужен, можно просто написать на новой строке $result++

В целом всё хорошо и логично, имена функций тоже норм :)

1nSide 14.04.2018 в 10:50

Так что-ли?

$arr = [];

for ($i = 1; $i <=20; $i++){
    $arr[] = $i;
}

function searchNumbersInArray($arr, $num){

    foreach ($arr as $value){
        if ($value === $num){
            return true;
        }
    }
    return false;
}

echo searchNumbersInArray($arr, $num = 10)? 'число найдено - '. $num : 'число не найдено';
ivashkevich 14.04.2018 в 15:35

Да, всё верно. Привыкайте использовать типы аргументов в функциях:

function searchNumbersInArray(array $arr, int $num)

фигурная скобка для тела функции ставится на новой строке:

function x()
{
    ...
}
1nSide 14.04.2018 в 11:34

Не совсем понял смысл задачи

$arr = [1,2,1,4];

function searchNumbersInArray($arr, $num){

$number = 0;

    foreach ($arr as $value){
        if ($value === $num){
           $number++;
        }
    }
    return $number;
}

echo searchNumbersInArray($arr, $num = 1);
ivashkevich 14.04.2018 в 15:37

Всё правильно)

Только не нужна вам здесь переменная $num:

echo searchNumbersInArray($arr, 1);
1nSide 17.04.2018 в 11:08

Так что-ли?

$arr = [1,2,1,4];

function searchNumbersInArray($arr)
{
    $number = 0;

    foreach ($arr as $value){
        if ($value === 1){
           $number++;
        }
    }
    return $number;
}

echo searchNumbersInArray($arr);
ivashkevich 17.04.2018 в 17:06

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

Вот так должно быть в конце:

echo searchNumbersInArray($arr, 1);
SlipKnot 10.07.2018 в 03:37

Домашка №1:

$isFind = false;
function myFunction($i, $array = [])
{
    foreach ($array as $item) {
        echo 'Сравниваем с числом - ' . $item . '<br>';
        if ($item === $i) {
            $isFind = true;
            echo 'Искомое число - ' . $i . ' найдено!<br>';
            break;
        }
    } if ($isFind != true) {
        echo 'Число ' . $i . ' не найдено!';
    }
}

Домашка №2:

function findNum ($i, $arr = [])
{
    foreach ($arr as $value) {
        if ($i == $value) {
            $count += 1;
        }
    }
    if ($count== 0) {
        echo 'Число ' . $i .' не найдено';
    }
    else echo 'Число ' . $i . ' встречается ' . $count . ' раз(а)';
}
ivashkevich 10.07.2018 в 16:24
  1. $isFind = false; - должно быть внутри функции.
  2. во второй функции в самом начале стоит определить $count = 0.
  3. для if и else всегда используйте фигурные скобки.
  4. прочитайте домашку ещё раз - функции не должны ничего выводить (никаких echo быть не должно), они должны что-то возвращать (должны быть return). Первая из них должна вернуть true или false, тут сразу можно указать тип возвращаемого значения bool. Вторая функция должна вернуть целое число, тут можно указать тип возвращаемого значения int.
  5. аргументы функций должны иметь тип int и array - это стоит явно указать перед аргументами.
  6. сами алгоритмы правильные, это хорошо, но стоит поработать над замечаниями.
dom1r 07.08.2018 в 18:30
<?php
// 1
$array = [1, 2, 0, 4, 0];

function findItem($array, $item) {
    $isNumberFound = false;

    foreach ($array as $value) {
        if ($item == $value) {
            $isNumberFound = true;
            break;
        } else {
            $isNumberFound = false;
        }
    }

    return $isNumberFound;
};

$result = findItem($array, 3);

var_dump($result);
<?php
// 2
$array = [1, 1, 3, 4, 5];

function findMatch ($array, $value) {
    $i = 0;

    foreach ($array as $item) {
        if ($value == $item) {
            $i++;
        }
    }

    return $i;
};

echo findMatch($array, 1);
ivashkevich 10.08.2018 в 19:44

Отлично! Не забывайте про типы аргументов и типы возвращаемых значений.

Fox-24 13.08.2018 в 20:35

Спасибо за еще один клевый урок!)

<?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);
ivashkevich 14.08.2018 в 20:26

Тут всё хорошо. Очень быстро осваиваете материал, у Вас отличные способности к программированию!

Fox-24 14.08.2018 в 20:29

Большое спасибо!
Я очень стараюсь и все задания делаю без "подсказок" из комментов, так продуктивнее и интереснее =)

[email protected] 06.09.2018 в 00:19

2)

<?php
$array = [2, 3, 6, 1, 1, 1, 1, 7, 1, 15];
$number = 1;
function return1 ( $array, $number)
{
    $i = 0;
    foreach ($array as $item) {
        if ($item !== $number) {
            continue;
        } else $i++;
    }
    return $i;
}

echo return1 ($array, $number);
ivashkevich 07.09.2018 в 08:41
  1. Давайте функциям осмысленные имена, что за return1?
  2. Всегда указывайте типы аргументов:
    function getCountInArray(array $array, int $number)
  3. Указывайте тип возвращаемого значения
    function getCountInArray(array $array, int $number): int
  4. Код в блоках if-else ВСЕГДА оборачивайте в фигурные скобки, даже если это одна строчка:
    if ($item !== $number) {
    continue;
    } else {
    $i++;
    }
  5. В вашем случае можно проверить только равенство:
    if ($item === $number) {
    $i++;
    } 

Ну а за то, что код работает - ставлю 5 =)

artemjeka 07.09.2018 в 09:33

1.

$arr = [1, 5, 234, 2, 52, 235];
$numb = 3;
function arrAndNumb($arr, $numb) {
    if (in_array($numb, $arr)) {
        return 'Число '.$numb.' есть в массиве!';
    } else {
        return 'Числа '.$numb.' нет в массиве!';
    }
}
echo arrAndNumb($arr, $numb);

2.

$arr = [1, 5, 234, 2, 52, 235, 2];
$numb = 2;
function arrAndNumb($arr, $numb)
{
    $count = 0;
    foreach ($arr as $number) {
        if ($number == $numb) {
            $count++;
        }
    }
    return 'Число ' . $numb . ' встречается '.$count.' раз в массиве!';
}
echo arrAndNumb($arr, $numb);
ivashkevich 07.09.2018 в 21:29
  1. Функция должна возвращать булево значение
  2. Функция должна возвращать число

У аргументов функций должны быть указаны типы! У функций должны быть указаны типы возвращаемых значений. Всё это было в уроке про функции.

Waldemar 28.11.2018 в 05:38

Что-то я не увидел в уроке про функции как указать у функции типы возвращаемых значений.

ivashkevich 28.11.2018 в 22:45

Действительно, как-то я упустил это. Спасибо =)

Benya 18.09.2018 в 15:50
<?php

function arrayIn(array $array, $x) {
    foreach ($array as $item) {
        if ($x == $item) {
            return true;
        }else {
            return false;
        }
    }
}
ivashkevich 22.09.2018 в 20:12

не пойдет - если передать массив:
1, 3, 5
и число:
3
то вернёт false, несмотря на то, что число в массиве есть

Benya 18.09.2018 в 16:06
function countOfarray(array $array, $x)
{
    $i=0;
    foreach ($array as $item) {
        if ($x == $item) {
            $i++;
        }
        return;
    }
}
$exarrey=[25,35,41,41,77,88,1];

echo "found-".countOfarray($exarrey, 41);
ivashkevich 22.09.2018 в 20:13

не работает

Art 06.10.2018 в 16:18
//Вариант с многомерным массивом и рекурсией
$menu = [
    'About',
    'My entry',
    'Services' => [
        'Service 1',
        'Service 2' => [
            'Sub Service 21',
            'Sub service 22',
            'My entry',
            'My entry'
        ]
    ],
    'Goods' => [
        'Goods 1',
        'Goods 2',
        'My entry',
        'My entry',
        'My entry'
    ],
    'Contacts',
    'My entry',
    'My entry'
];

//==================================
function arrayEntries($menu, $entry, $res)
{
    foreach ($menu as $item) {
        if (is_array($item)) {
            $res = arrayEntries($item, $entry, $res);
        } else {
            if ($item === $entry) {
                $res = true;
                break;//небольшая оптимизация
            }
        }
    }
    return $res;
}

//==================================
function countOfArrayEntries($menu, $entry, $res)
{
    foreach ($menu as $item) {
        if (is_array($item)) {
            $res = countOfArrayEntries($item, $entry, $res);
        } else if ($item === $entry) {
            $res++;
        }
    }
    return $res;
}

echo '<br>arrayEntries() = ' . (arrayEntries($menu, 'My entry', false) == true ? 'Entry found' : 'No entries');
echo '<br>countOfArrayEntries() = ' . countOfArrayEntries($menu, 'My entry', 0);
ivashkevich 07.10.2018 в 07:21

Норм

[email protected] 10.10.2018 в 20:07
function arrayCheck (array $array, int $x): boolean
{
    foreach ($array as $value){
        if ($value == $x) {
            $i = true;
            break;
        }
        else {
            $i = false;
        }
    }
    return $i;
}
echo arrayCheck([3,4,6,8,9,0],11);

Выдает ошибку, не пойму почему...

ivashkevich 12.10.2018 в 08:42

Какую ошибку?

[email protected] 18.10.2018 в 19:32

( ! ) 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 ? 'число найдено' : 'Число не найдено';

не работает, а понять почему не могу

ivashkevich 19.10.2018 в 00:29

Потому что нужно писать : bool а не : boolean

[email protected] 20.10.2018 в 19:04
<?php

function howMuch(array $array, int $x): int
{   $number = 0;
    foreach ($array as $value) {
        if ($value === $x) {
            $number++;
        }
    }
    return $number;
}
ivashkevich 20.10.2018 в 19:10

Хорошо. Но перед циклом стоит явно задать $number = 0

CarfikDK 21.10.2018 в 15:23
<?php

function search($arr, $AnotherWanted) //1
{
    $IsNumberFound=false;
    foreach ($arr as $number)
    {
        if($AnotherWanted === $number)
        {
            $IsNumberFound = true;
        }
    }
    if($IsNumberFound)
    {
        echo 'Такое число в масиве есть <br>';
    }else{
        echo 'Такого числа в масиве нету<br>';
    }
}

function CountOfNumbers($arr, $wanted) //2
{
    $counter = 0;
    foreach ($arr as $number) {
        if ($wanted === $number) {
            $counter++;
        }
    }
    return $counter;
}
$arr = [1,3,3,2,4,41,4,2,5,1,4,2,1,1,1];
$wanted = 1;
$AnotherWanted = 41;
echo 'Количество таких чисел как ' .$wanted . ' в масиве = ' . CountOfNumbers($arr, $wanted) . '<br>';
echo search($arr, $AnotherWanted);
ivashkevich 21.10.2018 в 22:32

Почему нет типов у аргументов в функциях, как в уроке?
В первой задаче функция должна возвращать булево значение, а не выводить что-то.
Имена переменных должны быть с маленькой буквы.
После $IsNumberFound = true; нужно делать break, так как дальше можно не искать.

CarfikDK 22.10.2018 в 18:55
<?php

function search(array $numbers , int $x) :bool //1
{
    foreach ($numbers as $number)
    {
        if($x === $number)
        {
            return true;
            break;
        }
    }
    return false;
}

function CountOfNumbers(array $numbers, int $x) : int //2
{
    $counter = 0;
    foreach ($numbers as $number) {
        if ($x === $number) {
            $counter++;
        }
    }
    return $counter;
}
$arr = [1,3,3,2,4,41,4,2,5,1,4,2,1,1,1];
$wanted = 1;
$anotherWanted = 41;
echo 'Количество таких чисел как ' .$wanted . ' в масиве = ' . CountOfNumbers($arr, $wanted) . '<br>';
$output = search($arr, $anotherWanted) ? 'Такое число в масиве есть' : 'Такого числа в масиве нету' ;
echo $output;
ivashkevich 23.10.2018 в 08:39

После return не имеет смысла делать break - функция завершает свое выполнение.
В остальном всё хорошо =)

stokato 03.11.2018 в 21:12

напишите функцию, принимающую на вход 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;
}
ivashkevich 04.11.2018 в 00:30

Всё супер!

virtual2018 21.11.2018 в 13:38
<?php
function numberInArray(array $arrayNumber, int $number)
{
    $variableFound = FALSE;
    foreach ($arrayNumber as $item) {
        if ($item == $number) {
            $variableFound = TRUE;
            break;
        }
    }
    return $variableFound;
}

$arrayNumber = [1, 3, 12, 5, 6, 7, 34, 22, 0, 25, 4, 34, 2, 1, 4, 5, 100, 1];
$number = 34;
echo numberInArray($arrayNumber, $number) ? "Число $number обнаружено в массиве" : "Число $number не обнаружено в массиве";

function countNumberInArray(array $arrayNumber, int $number)
{
    $count = 0;
    foreach ($arrayNumber as $item) {
        if ($item == $number) {
            $count++;
        }
    }
    return $count;
}

echo '<br>' . " Число $number обнаружено " . countNumberInArray($arrayNumber, $number) . " раз(а) в исходном массиве";
ivashkevich 22.11.2018 в 09:22

Не надо false и true капсом) А так - отличная домашка. Можно еще указать типы возвращаемых значений для функций.

Mike 28.11.2018 в 19:05

первое задание


<?php

function valueAr($array, $x){
    foreach ($array as $item){
        if ($item === $x) {
           return true; break;
        }
    }
}
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$x = 7;

echo valueAr($array, $x) ? 'число найдено и равно ' . $x : 'число не найдено ';

второе задание

<?php

function valueAr($array, $x){$i=0;
    foreach ($array as $item)
    {
         if ($item === $x)
         {
    $i+=1; continue;
         }
}echo $i;}
$array = [2, 3, 6, 1, 23, 2, 1, 7, 1, 7];
$x = 10;
echo valueAr($array, $x);
ivashkevich 28.11.2018 в 22:52
  1. После return уже ничего не выполнится, break не имеет смысла.
  2. Отформатируйте отступы, невозможно читать. Функция должна возвращать, а не выводить. Для чего continue, если итерация уже завершилась?
Bogdan 12.12.2018 в 00:46

// напишите функцию, принимающую на вход 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" будет равно двум.

function returnMatches($massive, $value) {
    $matches = 0;

    foreach ($massive as $key => $index) {
        $massive[$key] == $value ? $matches += 1 : ' ';
    }
    return $matches;
}
Bogdan 12.12.2018 в 00:51

возникли непонятки с циклом foreach ($massive as $key => $index)
в первом случае я писал условие: foreach ($massive as $key), отработало все хорошо вроде как, а вот во втором случае никак не хотел работать foreach ($massive as $key). в примерах у нас есть выражения без $index, но прогнав цикл через var_dump(), я увидел что в некоторых индексах масива потерялись значения, писало типа Null, хотя там Int.. как так, хз...

Bogdan 12.12.2018 в 01:05

разобрался, в коде было 2 функции, помогло - unset($value);))) иногда полезно читать)

ivashkevich 12.12.2018 в 23:39

Почему не указаны типы аргументов функций? Перечитайте урок про функции.

По первой задаче:

foreach ($array as $key => $index) {

Индексом называют ключ массива. У вас же $index - это значение, правильнее будет назвать его $value или $item. Кроме того, здесь можно обойтись более простой конструкцией, без ключа:

foreach ($array as $item) {
    if ($item === $value) {
    ...

По второй - тернарный оператор используется неправильно. Он нужен, когда результат его выполнения будет использоваться. Пример:

$x = 4 > 2 ? 1 : 0;

В этом примере результат из правой части будет присвоен $x. В вашем же случае правильнее использовать if.

XXX 13.01.2019 в 21:55
<?php
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 1;
$isNumberFound = false;

function findNumber(array $array , int $number )
{
    foreach ($array as $item) {
        if ($item === $number) {
            return true;
        }
    }

    return false;
}

findNumber($array, $number);

if($isNumberFound = true){
    echo 'число найденно в масиве';
}
else{
    echo 'число не найденно в масиве';
}
?>

Второе задание:

<?php
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 1;
$isNumberFound = false;

function findNumber(array $array , int $number )
{
    $i=0;
    foreach ($array as $item) {
        if ($item === $number) {
         $i++;
        }
    }

    return $i;
}

echo findNumber($array, $number);
ivashkevich 16.01.2019 в 09:00
  1. Переменная $isNumberFound всегда false до вот этого момента:
    if($isNumberFound = true){

    Здесь не сравнение происходит (===), а присваивание (=) значения true.
    В результате всегда будет выводиться фраза "число найдено в массиве".

  2. Переменная $isNumberFound не нужна
SashkoUkraine 22.01.2019 в 12:21
<?php

function findNumber ($arrayOfNumbers, $searchNumber) {
    foreach ($arrayOfNumbers as $number) {
        if($number == $searchNumber) {
            return true;
        }
    }
}

$arrayOfNumbers = [23, 51, 12, 366, 17];
$searchNumber = 12;

echo $numberExist = findNumber($arrayOfNumbers, $searchNumber) ? "Число найдено" : "Число не найдено";
echo '<br>';

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

function countSearchNumber($arrayOfNum, $searchNum) {
    $arrayOfSearchNumber = [];
    foreach ($arrayOfNum as $number) {
        if($number === $searchNum) {
            $arrayOfSearchNumber[] = $searchNum;
        }

    }
    return count($arrayOfSearchNumber);
}

$arrayOfNum = [85, 51, 24, 369, 158, 24, 374, 1, 24, 13, 24];
$searchNum = 24;

echo 'Кол-во раз вхождения числа в массив ' . countSearchNumber($arrayOfNum, $searchNum);
ivashkevich 23.01.2019 в 11:46
  1. Если число не найдено, должно возвращаться false. Для чего переменная $numberExist?
  2. Можно проще - увеличивать счётчик, не расходуя память на ещё один массив.

Указывайте типы аргументов и типы возвращаемых значений.

SashkoUkraine 23.01.2019 в 11:52

ок

Bugaga159 25.01.2019 в 09:50
<?php
/*
Задание 1
*/
function inArrays(array $item, int $num){
  foreach($item as $list){
    if($num == $list){
      return true;
    }   
  }
  return false;
}
$arr = [125, 24, 6, 2, 42, 32, 0, 2];
var_dump( inArrays($arr, 32));

/*
Задание 2
*/

function countNumInArray(array $item, int $num){
  $countArr = 0;
  foreach($item as $list){
    if($list == $num){
      $countArr +=1;
    }
  }
  return $countArr;
}
echo countNumInArray($arr, 2);
ivashkevich 25.01.2019 в 10:19
  1. Неподходящие имена переменных. item - один элемент, а у вас так называется массив, то есть множество элементов. $list - список, у вас - это единственный элемент. Ерунда выходит)
  2. То же самое.

P.S. И то и то работает, это уже хорошо. Но читать такой код другим программистам будет очень сложно.

Bugaga159 25.01.2019 в 10:53

Перепутал переменные, переделаю.

Bugaga159 26.01.2019 в 12:51
<?php
/*
Задание 1
*/
function inArrays(array $list, int $num){
  foreach($list as $item){
    if($num == $item){
      return true;
    }   
  }
  return false;
}
$arr = [125, 24, 6, 2, 42, 32, 0, 2];
var_dump( inArrays($arr, 32));

/*
Задание 2
*/

function countNumInArray(array $list, int $num){
  $countArr = 0;
  foreach($list as $item){
    if($item == $num){
      $countArr +=1;
    }
  }
  return $countArr;
}
echo countNumInArray($arr, 2);
[email protected] 26.01.2019 в 08:47
/*   $var = false;
        function getArray($array,$num){
            foreach ($array as $item){
                if ($item === $num){
                    $var = true;
                    echo 'true';
                } else {
                    $var = false;
                    echo false;
                }
            }
        }

        $array = [1,4,6,7,9,6,3,6,7];
        getArray($array,6);

        */
            $count = 0;
        function getArray($array,$num)
        {
            foreach ($array as $item){
                if ($num === $item){
                    $count++;
                }
            }

            echo $count;
        }

        $array = [1,4,6,7,9,6,3,6,7];
        getArray($array,6);
ivashkevich 27.01.2019 в 10:52

Переменные, объявленные вне функций, внутри функций не будут видны. Где вы такие примеры увидели?

        $count = 0;
        function getArray($array,$num)

$count должно быть объявлено внутри тела функции! В первом примере аналогично.

  1. Функция должна вернуть одно булево значение, а не выводить строки для каждого числа.
  2. Функция должна вернуть число, а не вывести его.
Pro100Bah 29.01.2019 в 16:05
echo '<br>' . 'Homework17' . '<br>';
$arrayOfSixNumbers = [2, 8, 56, 666, 4, 100];

function searchNumbers(array $arrayOfSixNumbers, int $z)
{
    $ourNumber = false;
    foreach ($arrayOfSixNumbers as $value) {
        if ($z === $value) {
            $ourNumber = true;
            break;
        } else {
            $ourNumber = false;
        }
    }
    return $ourNumber;
}

$resultFunction = searchNumbers($arrayOfSixNumbers, 666);
var_dump($resultFunction);
echo '<hr>';
$arrayOfTenNumbers = [2, 3, 2, 1, 66, 77, 8, 2, 111, 3];

function repeatNumbers(array $arrayOfTenNumbers, int $x)
{
    $ourRepeat = 0;
    foreach ($arrayOfTenNumbers as $index) {
        if ($x === $index) {
            $ourRepeat++;
        }
    }
    return $ourRepeat;
}

$resultFunction1 = repeatNumbers($arrayOfTenNumbers, 3);
var_dump($resultFunction1);

Ох намучился я с синтаксисом, то запятую пропущу, то скобку не там вставлю.

ivashkevich 29.01.2019 в 23:38
  1. Внутри цикла можно не присваивать false, так как оно всегда false, до тех пор пока не перейдет в true. Ну а там уже и цикл завершится.
  2. Все отлично!
[email protected] 04.02.2019 в 17:25
//задаем переменные
$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);
ivashkevich 07.02.2019 в 12:48

Функция должна вернуть булево значение. У аргументов должны быть типы.

[email protected] 04.02.2019 в 19:45
//задаем переменные
$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);
ivashkevich 07.02.2019 в 12:48

Функция должна вернуть целое число. У аргументов должны быть типы.

ashfedor 08.03.2019 в 11:40
function searсhNumber(array $array, int $number)
{

    foreach ($array as $item) {
        if ($item === $number){
            $rezult = true;
        }
        break;
    }
    return $rezult;
}
$array = [5, 3, 7, 8, 95, 10, 97];
$number = 5;

var_dump(searсhNumber($array, $number));
echo '<br>';

function searсhNumberSum(array $array, int $number)
{
    $sum = 0;
    foreach ($array as $item) {

        if ($item === $number){
            $sum = $sum + 1;
        }

    }
    return $sum;
}
$array = [5, 3, 7, 8, 9, 5, 10, 97];
$number = 5;
echo searсhNumberSum($array, $number);
ivashkevich 09.03.2019 в 19:32
  1. Где типы аргументов?
  2. Первая функция должна возвращать булево значение
  3. Вторая функция должна возвращать int
[email protected] 10.03.2019 в 12:35
<?php
$search = 12;
function searchNumber(array $arr, int $search)
{
    foreach ($arr as $value) {
        if ($value === $search) {
            return true;
        }
    }
    return false;

}

function countOfEntries(array $arr, int $search)
{
    $countOfEntries = 0;
    foreach ($arr as $value) {
        if ($search === $value) {
            $countOfEntries += 1;
        }
    }
    return $countOfEntries;
}

$arr = [22, 43, 1, 12, 55, 12, 45, 3];
echo searchNumber($arr, $search) . '<br>';
echo "Количество вхождений числа $search: " . countOfEntries($arr, $search);
ivashkevich 11.03.2019 в 21:10

Отлично!

Blook 11.03.2019 в 23:06
1---------------------------------------------
function doesElementExistInArray($array, $element)
{
    foreach ($array as $value) {
        if ($value == $element) {
            return True;
            break;
        }
    }
    return False;
}

echo doesElementExistInArray([1,3,5, 'a'], 'a');

2----------------------------------------------------

function numberOfCoincidences($array, $element)
{
    $result = 0;
    foreach ($array as $value) {
        if ($value == $element) {
            $result++;
        }
    }
    return $result;
}

echo numberOfCoincidences([1,2,1,3], 1);
ivashkevich 12.03.2019 в 09:42

После return не нужен break. После return функция завершает свою работу.
true и false пишутся с маленькой буквы.
У аргументов функций должны быть указаны типы!

Shtiher 13.03.2019 в 16:28

Первое задание:

<?php

$array = [2, 3, 6, 0, 23, 2, 56, 7, 1, 15];
$number = 1;

var_dump(findY($array, $number));

function findY($x, $y)
{
    $isNumberFound = false;
    foreach ($x as $item) {
        if ($item === $y) {
            $isNumberFound = true;
            break;
        }
    }
    return $isNumberFound;
}

Второе задание:

<?php

$array = [2, 3, 6, 1, 3, 2, 56, 7, 1, 15];
$number = 3;

echo 'число вхождений числа '. $number . ' равно '.checkSameNum($array, $number) . '.';

function checkSameNum($x, $y)
{
    $count = 0;
    foreach ($x as $item) {
        if ($item === $y) {
            $count++;
        }
    }
    return $count;
}
ivashkevich 14.03.2019 в 09:12

Хорошо, но не хватает типов аргументов функций. Привыкайте их указывать.

Grewi 16.03.2019 в 00:37
// Присутствие значения в массиве
$arr = [2, 5, 8, 8, 7, 5, 2, 1, 5];
$namber = 2;

function namberTrue(array $arr, int $namber)
{
    foreach ($arr as $indexArr) {
        if ($indexArr === $namber) {
            return true;
        }
        return false;
    }
}

var_dump(namberTrue($arr, $namber));

//Подсчет совпадений в массиве
$arr2 = [2, 5, 8, 8, 7, 5, 2, 1, 5, 2];
$namber2 = 8;

function namberDigits(array $arr2, int $namber2)
{
    $i = 0;
    foreach ($arr2 as $indexArr2) {
        if ($indexArr2 === $namber2) {
            $i++;
        }
    }
    echo $i;
}

echo namberDigits($arr2, $namber2);
ivashkevich 17.03.2019 в 23:42
  1. Если начать искать число 5, то выдаст false, хотя в массиве это число есть. Правильно пишется nUmber.
  2. Функция должна возвращать число вхождений, а не выводить его. Второй echo после вызова не имеет смысла - функция ничего не вернет, а значит и выводить нечего.
[email protected] 16.03.2019 в 16:11

Поиск числа в массиве

<?php
function isNumberFound($array, $number) {
    $numberFound = false;

    foreach ($array as $item) {
        if ($item === $number) {
            $numberFound = true;
            break;
        }
    }

    return $numberFound;
}

$arrayOfNumbers = [4, 3, 5, 6, 5];
$numberToSearch = 5;
var_dump(isNumberFound($arrayOfNumbers, $numberToSearch));

Поиск вхождений

<?php
function isNumberFound($array, $number) {
    $numberOfMatches= 0;

    foreach ($array as $item) {
        if ($item !== $number) {
            continue;
        }
        $numberOfMatches++;
    }

    return $numberOfMatches;
}

$arrayOfNumbers = [4, 3, 5, 6, 5, 9, 5, 4];
$numberToSearch = 4;

echo 'Число вхождений: ' . isNumberFound($arrayOfNumbers, $numberToSearch);
ivashkevich 17.03.2019 в 23:43

Хорошо, но не указаны типы аргументов.

lilit 16.03.2019 в 22:57

Первое:

<?php
function getSum($array, $number)
{
    foreach ($array as $item) {
        if ($item === $number) {
            return ('Число найдено');
        }
    }
    return ('Число не найдено');
};

Второе:

<?php

function getSum($array, $number)
{
    $sum = 0;
    foreach ($array as $item) {

        if ($item == $number) {
            $sum++;
        }
    }
    return $sum;
};
ivashkevich 17.03.2019 в 23:44
  1. Должен быть указан тип аргументов. Функция должна возвращать булево значение, а не строку.
  2. Должен быть указан тип аргументов.
lilit 18.03.2019 в 11:33

Вооот так тогда.

Первое:

<?php
function getSum(array $array, int $number)
{
    foreach ($array as $item) {
        if ($item === $number) {
            return true;
        }
    }
    return (false);
};

Второе:

<?php

function getSum(array $array, int $number)
{
    $sum = 0;
    foreach ($array as $item) {

        if ($item == $number) {
            $sum++;
        }
    }
    return $sum;
};
ivashkevich 18.03.2019 в 12:30

Хорошо. false не надо в скобки заворачивать.

lilit 20.03.2019 в 19:24

Точно! Спасибо)

XXX 17.03.2019 в 12:51
<?php
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 2;

function findNumberAmount(array $array , int $number )
{
    $i=0;
    foreach ($array as $item) {
        if ($item === $number) {
         $i++;
        }
    }

    return $i;
}

echo findNumberAmount($array, $number);

function findNumber(array $array, int $number)
{
    foreach ($array as $item) {
        if ($item === $number) {
            return $isNumberFound = true;
            break;
        }
    }
}

echo var_dump(findNumber($array, $number));
ivashkevich 17.03.2019 в 23:46
  1. ОК
  2. На конструкции return функция завершает свою работу. После него break не имеет смысла - этот участок кода никогда не выполнится. Присваивание в переменную перед тем как вернуть значение тоже не имеет никакого смысла.
Boodoo 02.04.2019 в 06:30

напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.

<?php

    $arr = [1,2,3,4,5];
    $a = 4;

    function test(array $arr, $x) {
        foreach($arr as $v) {
            if($v != $x) {
                continue;
            } else {
                return true;
            }
        }
        return false;
    }

    function test1(array $arr, $x) {
        foreach($arr as $v) {
            if($v == $x) {
                return true;
            }
        }
        return false;
    }

    var_dump(test($arr, $a));
ivashkevich 02.04.2019 в 07:21

Ок. В первом примере return true можно вынести за блок else, а блок, соответственно, вообще убрать.

Boodoo 02.04.2019 в 08:02

Понял, ок.

Boodoo 02.04.2019 в 06:34

напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.

<?php

    $arr = [1,2,3,1,5,1,2];
    $a = 2;

    function test(array $arr, $x) {
        $count = 0;
        foreach($arr as $v) {
            if($x == $v) {
                $count++;
            }
        }
        return $count;
    }

    echo test($arr, $a);
ivashkevich 02.04.2019 в 07:21

Отлично

[email protected] 11.04.2019 в 19:17

Задание 1:

<?php
$isNumberFound = false;
function isValuePresent(array $x, int $y)
{
    foreach ($x as $item) {
        echo 'Сейчас проверяется число ' . $item . '<br>';
        if ($item === $y) {
            $isNumberFound = true;
            break;
        }
    }
    return $isNumberFound ? 'Число "' . $y .'" найдено!' : 'Число "' . $y .'" не найдено!';

}
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$number = 15;
echo isValuePresent($numbers, $number);

Задание 2:

<?php

function isValuePresent(array $x, int $y)
{
    $numberOfRepetitions = [];
    foreach ($x as $item) {
        echo 'Сейчас проверяется число ' . $item . '<br>';
        if ($item !== $y) {
            continue;
        }
        $numberOfRepetitions[] = $y;
    }
    return count($numberOfRepetitions);

}
$numbers = [1, 2, 3, 1, 1, 6, 7, 8, 9, 10];
$number = 3;
echo 'Количество вхождений числа "' . $number . '" в массив равняется ' . isValuePresent($numbers, $number);
ivashkevich 12.04.2019 в 10:49
  1. Почему $isNumberFound = false; за пределами функции? В случае, когда оно false, в выражении
    return $isNumberFound ? 'Число "' . $y .'" найдено!' : 'Число "' . $y .'" не найдено!';

    возникнет ошибка.

  2. numberOfRepetitions - неподходящее название. number говорит о том, что в переменной лежит число. На деле же там массив.
    Кроме того, вместо того чтобы помещать одно и то же число в массив а затем считать число элементов в нем, лучше просто завести переменную со счетчиком вхождений.
[email protected] 12.04.2019 в 11:57

Спасибо за поправки!
Тогда с учетом замечаний получается так.
Задание 1:

<?php

function isValuePresent(array $x, int $y)
{
    $isNumberFound = false;
    foreach ($x as $item) {
        echo 'Сейчас проверяется число ' . $item . '<br>';
        if ($item === $y) {
            $isNumberFound = true;
            break;
        }
    }
    return $isNumberFound ? 'Число "' . $y .'" найдено!' : 'Число "' . $y .'" не найдено!';
}

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$number = 7;
echo isValuePresent($numbers, $number);

Задание 2

<?php

function isValuePresent(array $x, int $y)
{
    //наименование переменной не меняю, так как теперь это не массив 
    $numberOfRepetitions = 0;
    foreach ($x as $item) {
        echo 'Сейчас проверяется число ' . $item . '<br>';
        if ($item !== $y) {
            continue;
        }
        $numberOfRepetitions++;
    }
    return $numberOfRepetitions;
}

$numbers = [1, 2, 3, 1, 1, 1, 1, 8, 9, 10, 10];
$number = 1;
echo 'Количество вхождений числа "' . $number . '" в массив равняется ' . isValuePresent($numbers, $number);
ivashkevich 12.04.2019 в 12:29

Теперь отлично

artemship 16.04.2019 в 14:06
function isNumberFound(array $a, int $x)
{
    $isFound = false;
    foreach ($a as $item) {
        if ($item === $x) {
            $isFound = true;
            break;
        }
    }
    return $isFound;
}

function amountOfNumbers(array $a, int $x)
{
    $amount = 0;
    foreach ($a as $item) {
        if ($item !== $x) {
            continue;
        }
        $amount++;
    }
    return $amount;
}

$array = [3, 7, 6, 2, 7, 99, 55, 36, 83, 7, 11, 31, 48];
$number = 7;
echo isNumberFound($array, $number) ? 'Число ' . $number . ' найдено!' : 'Число ' . $number . ' не найдено';
echo '<br>';
echo 'Количество вхождений: ' . amountOfNumbers($array, $number);

Можно ли первую функцию написать так?:

function isNumberFound(array $a, int $x)
{
    foreach ($a as $item) {
        if ($item === $x) {
            return true;
        }
    }
}
ivashkevich 17.04.2019 в 22:17

Отлично.
Можно, только в конце обязательно должен быть return false.

[email protected] 18.04.2019 в 13:31
<?php

function hasInArray(array $array , int $num ,int $average)
{
    foreach ($array as $item) {
        if ($item === $num) {
            $average++;
        }
    }
echo 'Количество выбранного элемента(2) в массиве: '.$average;

}
echo hasInArray([2,3,5,6,3,2,3,5,2],2,0);
ivashkevich 18.04.2019 в 14:19
  1. Назвать лучше countInArray
  2. average не подходит по смыслу. Лучше count
  3. Число вхождений не должно передаваться извне, оно должно быть инициализировано в начале функции как равное нулю.
Dram 21.04.2019 в 12:21

Первая задачка

<?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();
ivashkevich 21.04.2019 в 17:19

Нет здесь двух аргументов. Один есть, но и тот необязательный - в функцию не передается ни одного. Пересмотрите урок!

Dram 21.04.2019 в 19:21

Кажется разобрался с передачей аргументов в функцию, так?

<?php
function twoArgumets ($array, $i) {

    foreach ($array as $item) {
        if  ($i===$item) {
            echo '<br>';
            echo 'true';
        } else
            echo 'false';
        echo '<br>';
    }
}
twoArgumets($array=[27,2,3,4,13],$i=13);
ivashkevich 22.04.2019 в 17:16

Только вызов вот так:

twoArgumets([27,2,3,4,13],13);

Вы на питоне до этого писали что ли?

Dram 22.04.2019 в 17:19

Ой, напутал сори, это я правил то что мне сын подсказал. А он да - на питоне кодит :)

ivashkevich 22.04.2019 в 17:24

Понятно, там другой синтаксис. В PHP, когда вы пишете

twoArgumets($array=[27,2,3,4,13],$i=13);

Сначала создаётся переменная array со значением переданного массива, потом переменная i, со значением 13, а затем эти переменные передаются в функцию. Первые два шага, как вы понимаете, нам не нужны.

Dram 21.04.2019 в 13:09

вторая:

<?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();
ivashkevich 21.04.2019 в 17:21

Аргументы должны передаваться при вызове функции

Dram 21.04.2019 в 19:23
<?php
function twoArgumets ($array,$i) {
    $a=13;
    foreach ($array as $item) {
        if  ($a===$item) {
            $i++;
        }
    }
    return $i;
}
echo twoArgumets($array=[27,13,3,4,13,45,44,13,99,18,52],$i=0);
Bizzzon 06.07.2019 в 20:03

Эстетичнее было бы написать массив вне функции, а в него передать только название) $i = 0 при вызове функции тоже не нужно, просто через запятую указываешь число)

[email protected] 08.05.2019 в 14:10
function searchNumber ($arr,$number)
{
    $search = false;
    forEach ($arr as  $searchNumber) {

        if ($searchNumber === $number) {
            $search = true;
            break;
        }
    }
   var_dump($search);
};

searchNumber([1,2,3,4,5,6,7],0);

function numberCount($arr,$number)
{
    $count = 0;
    forEach ($arr as $numbers) {
        if ($numbers === $number) {
            $count++;
        }
    }
    echo $count;
};

numberCount([1,1,1,3,4,5,6,1],1);

не совсем понял а нужно ли нам использовать оператор continue в второй задачи

ivashkevich 10.05.2019 в 13:38
  1. foreach, а не forEach. У аргументов должны быть указаны типы. Функция должна возвращать булево значение, а не выводить что-то через var_dump
  2. foreach, а не forEach. У аргументов должны быть указаны типы. Функция должна возвращать значение типа int, а не выводить что-то через echo
  3. continue здесь не нужен
Moskva 18.05.2019 в 18:31

Код:

function numberSearch($array, $number){ // Поиск числа в массиве

    for($n=0, $sizearray = count($array) ; $n < $sizearray ; $n++){
        if ($array[$n] == $number){
            return true;
        }
    }
    return false;
}

function countNumber($array, $number){ // Количество числа $number в массиве

    for($n=0, $sizearray = count($array), $i = 0; $n < $sizearray ; $n++){
        if ($array[$n] == $number){
            $i++;
        }
    }
    return 'Количество ' . $number . ' находящихся в массиве равно ' . $i;
}

$array = [12, 123, 54, 8, 2, 9, 4, 6, 1, 1, 1, 12, 1];
$number = 5;
$countcheak = countNumber($array, $number);
$cheak = numberSearch($array, $number);
echo $countcheak . '<br>';
echo $cheak;
ivashkevich 19.05.2019 в 23:05
  1. Укажите типы аргументов. Слишком сложно с помощью for. К тому же на каждой итерации будет выполняться проверка условия и каждый раз будет вызываться count(). Решение - вынести число элементов в массиве в отдельную переменную до цикла. Тогда count вызовется только один раз, а дальше будет использоваться уже готовое значение из переменной. Ну а вообще тут конечно просто foreach нужно использовать.
  2. Укажите типы аргументов. Та же история с count. Функция должна возвращать число, а не строку. Ну и foreach тут тоже самое простое решение.
Moskva 23.06.2019 в 13:46
function numberSearch($array, $number){ // Поиск числа в массиве
    foreach($array as $arrays){
        if ($arrays == $number){
            return true;
        }
    }
    return false;
}

function countNumber($array, $number){ // Количество числа $number в массиве
    $i=0;
foreach ($array as $arrays){
    if ($arrays == $number){
        $i++;
    }
}
    return $i;
}

$array = [12, 123, 54, 8, 2, 9, 4, 6, 1, 1, 1, 12, 1];
$number = 5;
$cheak = numberSearch($array, $number);
$countcheak = countNumber($array, $number);
echo $countcheak . '<br>';
echo $cheak;
ivashkevich 23.06.2019 в 17:45
  1. Где типы аргументов?
    $arrays - неподходящее название для элемента массива.
  2. Не указаны типы аргументов. Решение ок.
bratko 20.05.2019 в 14:20

1 задание (фуух, не сразу получилось):

$arr = [3, 5, 8, 4, 210, 18];

function numElements($arr, $num)
{
    foreach ($arr as $item) {
        if ($item == $num) {
            echo 'Число найдено';
            return true;
        }
    }
    echo 'Число не найдено';
    return false;
}

var_dump(numElements($arr, 18));

2 задание сам не смог сделать, только посмотрев как другие делали - понял что вроде ничего сложного

ivashkevich 20.05.2019 в 15:43
  1. Нужны типы аргументов
  2. По заданию функция должна возвращать значение. Про вывод сообщений ничего не было.
bratko 20.05.2019 в 15:47

так?

$arr = [3, 5, 8, 4, 210, 18];

function numElements(array $arr, int $num)
{
    foreach ($arr as $item) {
        if ($item == $num) {
            return true;
        }
    }
    return false;
}

var_dump(numElements($arr, 18));
ivashkevich 21.05.2019 в 13:07

Супер!

esqrx 05.06.2019 в 20:35
<?php
/// 1

$massiv = [7, 9, 4, 6, 1, 3, 8, 5];
function firstTask ($arr, $x)
{
    foreach ($arr as $item){
        echo 'Сравниваю число ' . $item . '<br>';
        if ($x == $item){
            $i = true;
            break;
        }
        else { $i = false;}
    }
    echo $i ? 'True' : 'False';
}

firstTask($massiv, 9);
echo '<hr>';
firstTask($massiv, 2);

/// 3

$massiv = [7, 9, 4, 6, 1, 3, 5, 5, 8, 5];
function secondTask ($arr, $x)
{
    foreach ($arr as $item) {
        if($item == $x){
            $countArr[] = $x;
        }
    }
    echo count($countArr);
}

secondTask($massiv, 5);
ivashkevich 06.06.2019 в 09:32

Не указаны типы аргументов.

Это что такое

else { $i = false;}

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

Функция должна возвращать булево значение, а не выводить строку!

Со второй функцией аналогично.

esqrx 10.06.2019 в 16:31
<?php
/// 1

$massiv = [7, 9, 4, 6, 1, 3, 8, 5];
function firstTask(array $arr, int $x)
{
    $thisNumber = false;
    foreach ($arr as $item) {
        echo 'Сравниваю число ' . $item . '<br>';
        if ($x == $item) {
            $thisNumber = true;
            break;
        }
    }
    //echo $thisNumber ? 'Число ' . $thisNumber . ' найдено' : 'Число ' . $x . ' не найдено';
    return $thisNumber ? true : false;
}

var_dump(firstTask($massiv, 9));
echo '<hr>';
var_dump(firstTask($massiv, 2));

echo '<hr>';

/// 2

$massiv = [7, 9, 4, 6, 1, 3, 5, 5, 8, 5];
function secondTask(array $arr, int $x)
{
    foreach ($arr as $item) {
        if ($item == $x) {
            $countArr[] = $x;
        }
    }
    return count($countArr);
}

var_dump(secondTask($massiv, 5));
ivashkevich 11.06.2019 в 02:00
echo 'Сравниваю число ' . $item . '<br>';

Выводить ничего не надо.

//echo $thisNumber ? 'Число ' . $thisNumber . ' найдено' : 'Число ' . $x . ' не найдено';

Комментариев с неисполняемым кодом быть не должно.

return $thisNumber ? true : false;

??? Просто:

return $thisNumber;

А то получается - если тру, то тру, иначе - фолс. Хотя в переменной уже лежит одно из этих значений.

esqrx 12.06.2019 в 09:43

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

/// 1

function firstTask(array $arr, int $x)
{
    $thisNumber = false;
    foreach ($arr as $item) {
        if ($x == $item) {
            $thisNumber = true;
            break;
        }
    }
    return $thisNumber;
}
$massiv = [7, 9, 4, 6, 1, 3, 8, 5];
var_dump(firstTask($massiv, 9));
var_dump(firstTask($massiv, 2));
ivashkevich 12.06.2019 в 18:01

Отлично!

ivashkevich 11.06.2019 в 02:03

По второй задаче - более оптимальным решением будет просто увеличивать счётчик при каждом нахождении числа.
P.S. разбивайте комментарии - одна задача, один комментарий. И используйте оформление кода - кнопка слева вверху в окне добавлении комментария.

esqrx 12.06.2019 в 09:40
/// 2

function secondTask(array $arr, int $x)
{
    $countArr = 0;
    foreach ($arr as $item) {
        if ($item == $x) {
            $countArr++;
        }
    }
    return $countArr;
}
$massiv = [7, 9, 4, 6, 1, 3, 5, 5, 8, 5];
var_dump(secondTask($massiv, 2));
var_dump(secondTask($massiv, 5));

//о, а я думал как же самому сделать читаемый код в комментах

ivashkevich 12.06.2019 в 18:01

Отлично!

Bizzzon 06.07.2019 в 20:00
<?php
$array = [1, 1, 3, 8, 9, 6];
function countOfNumbers($array, $num) {
    $count = 0;
    foreach ($array as $item) {
        if ($num === $item) {
            $count++;
        }
    }
    echo 'Количество повторений числа ' . $num . ' равно ' . $count;
}
echo countOfNumbers($array, 5);

Второе задание

ivashkevich 07.07.2019 в 18:00

Где типы аргументов?

Reechniy 09.07.2019 в 14:14
раз:

<?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).' раз.';
ivashkevich 09.07.2019 в 19:03

Всё должно быть в виде функций

kvakazuabr 16.07.2019 в 10:29
$arr4 = ["Mac", "Win", "Irix", "Linux"];
$win = "Win";

function checkValues($arr, $gf) {
    foreach($arr as $item) {
        if($gf === $item) {
            echo 'true <br>';
            break;
        } 
        echo 'false<br>';
    }

}

checkValues($arr4, $win);

$number = [9, 6, 3, 6, 2, 1, 6, 9];
$six = 6;
function checkNum($arr, $num) {
    $count = 0;
    foreach($arr as $item) {
        if($num === $item) {
           $count++;
        } 
        continue;
    }
    echo $count.'<br>';
}

checkNum($number, $six);
ivashkevich 17.07.2019 в 04:21

Функции должны возвращать значение, а не выводить его. У аргументов функций обязательно нужно указывать типы!

AlexxxEy 17.07.2019 в 20:27
function Arg($array, $number){
    $elements = 0;
foreach($array as $key){

    if($key === $number){
        $elements++;
    }

}
return $elements;
}

$array = [2, 4, 3, 2, 1, 3];
$number = 3;
$s = Arg($array, $number);
print $s;
ivashkevich 18.07.2019 в 04:23

Что с оступами? Почему всё пляшет? Делайте как в моих примерах.

Имена функций пишутся с маленькой буквы.

Должны быть указаны типы аргументов.

Скобка, открывающая тело метода, должна быть на отдельной строке.

Aleks 13.08.2019 в 11:32

напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.

<?php
function valueFound($array, $value) {
    foreach ($array as $item) {
        if ($item === $value) {
            return true;
        }
    }
    return false;
}

$array = [
    'Oleg',
    'Vasiliy',
    'Egor'
];

$value = 'Egor';
var_dump(valueFound($array, $value));
ivashkevich 13.08.2019 в 11:49

И где функция?

Aleks 13.08.2019 в 13:35

Поправил

ivashkevich 13.08.2019 в 19:33

Нужно указывать типы аргументов

Aleks 13.08.2019 в 14:23

напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает число вхождений числа в массив. Например: для массива [1, 2, 1, 3] число вхождений числа "1" будет равно двум.

<?php
function numberOfOccurrences($array, $value) {
    $count = 0;
    foreach ($array as $item) {
        if ($item === $value){
            $count++;
        }
    }
    return $count;
}

$array = [
    'Aleks',
    'Vsailiy',
    'Kolya',
    'Andrey',
    'Aleks'
];

$value = 'Aleks';

var_dump(numberOfOccurrences($array, $value));
ivashkevich 13.08.2019 в 19:36

Нужно указать типы аргументов

Vladimir96 14.08.2019 в 23:34
//Домашнее задание
$y = [4, 3, 8, 15, 8, 32, 9, 8];
$x = 8;

//Первое задание
function searchNumInArray(int $num, array $arr)
{
    foreach ($arr as $value) {
        if ($value === $num) {
            return true;
        }
    }

    return false;
}
echo searchNumInArray($x, $y);

//Второе задание
function sameNumInArray (int $num, array $arr)
{
    $resultNumInArray = 0;

    foreach ($arr as $value) {
        if($value === $num) {
            $resultNumInArray++;
        }
    }

    return $resultNumInArray;
}

echo '<br>';
echo sameNumInArray($x, $y);
ivashkevich 16.08.2019 в 20:26

Во втором задании нужно было посчитать число вхождений, а не сумму чисел.

Vladimir96 16.08.2019 в 22:17

Поправил)

ivashkevich 18.08.2019 в 06:46

Теперь ок

Lasto 20.08.2019 в 13:57

Упустил момент, оказалось сверху окно ввода, в коде ошибок не на делал?

$array=[1,3,4,5,6,7,8,9,0];
$number=4;

   function faundNamber($array,$number)
   {

       $isNumberFaund = false;
       foreach ($array as $item) {
           if ($item === $number) {
             return  $isNumberFaund = true;

           }
       }
   }
    echo  faundNamber($array,$number) ? 'число найдено' : 'число не найдено';
ivashkevich 22.08.2019 в 06:46
  1. Не указаны типы аргументов
  2. Found, а не Faund
  3. return $isNumberFaund = true; - не имеет смысла присваивать переменной значение, оно не используется больше нигде. Правильно или написать $isNumberFaund = true; и затем в конце функции сделать return. Либо сразу писать return true, но тогда потеряется изучаемый в этом уроке оператор break.
  4. Если число не найдено, функция должна вернуть false. У вас она не возвращает ничего (результат - null). Можете проверить var_dump-ом
[email protected] 26.08.2019 в 01:42
<?php

function quantityNumberFound($array, $number)
{
    $i=0;
    foreach ($array as $item) {
        echo 'Сравниваем с числом элемент ' . $item . '<br>';
        if ($item === $number) {
            $i++;
            continue;
        }
    }
    echo  'Кол-во совпадений ' . $i;
}

$array = [15,1,5,7,1,9,1,2];
$number = 1;

quantityNumberFound($array, $number);
ivashkevich 26.08.2019 в 07:07

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

Ooleg 27.08.2019 в 18:41
function isItTrue (array $array, int $number){
    $isNumberFound = false;
    foreach ($array as $item) {
        if ($item === $number) {
            $isNumberFound = true;
            break;
        }
    }
    return $isNumberFound;
}

$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15, 3, 2, 1, 1, 7];
$number = 2;

var_dump(isItTrue($array, $number));

//--------------------------------------//
echo '<br>';

function number(array $array, int $number){
    $numberCount = 0;
    foreach ($array as $item) {
        if ($item != $number) {
            continue;
        }
        $numberCount ++;
    }
    return $numberCount;
}

echo number($array, $number);
ivashkevich 28.08.2019 в 05:57

Где типы аргументов функции?

Ooleg 28.08.2019 в 09:26

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

ivashkevich 28.08.2019 в 17:46

Отлично

Dreft 02.09.2019 в 08:42

Задание 1.

<?
function isNumberExist(array $arr, int $x)
{
    foreach ($arr as $value) {
        if ($value == $x) {
            return true;
        }
    }
        return false;
}
$a = [1, 2, 1, 1];
$b = 2;

var_dump(isNumberExist($a, $b));

Задание 2.

    function entriesCount(array $arr, int $x)
    {
        $res = 0;
        foreach ($arr as $value) {
            if ($x == $value) {
                $res++;
            }
        }
        return $res;
    }

    $a = [1, 2, 1, 1];
    $b = 1;
    echo "Число вхождений значения " . $b . ' - ' . entriesCount($a, $b);
ivashkevich 02.09.2019 в 10:09
  1. Если число не первое в массиве, то сразу вернётся false.
  2. Что за функция в функции?
Dreft 02.09.2019 в 13:48

Поправил.

ivashkevich 02.09.2019 в 18:31

Ок

XXX 03.09.2019 в 18:15
<?php
function foundNumber(array $array, int $number)
{
    foreach ($array as $value) {
        if ($value === $number) {
            return true;
            break;
        }
        return false;
    }
}

var_dump(foundNumber([2,3,5,7,9], 1));

function foundNumbQuantity(array $array, int $number)
{
    foreach ($array as $value) {
        if ($value !== $number) {
            continue;
        }
        $i++;
    }
    return $i;
}
var_dump(foundNumbQuantity([2,2,3,3,3,4,2,5,6,7,8,9,3], 2));
ivashkevich 03.09.2019 в 18:58
  1. После return break не нужен. На return функция завершает свою работу.
  2. Отлично.
Clawson 04.09.2019 в 16:39
<?php
function matchSearch (array $array, int $number) {
    $isNumberFound = false;
    foreach ($array as $item) {
        if ($item === $number){
            $isNumberFound = true;
            break;
        }
    }
    return $isNumberFound;
}

function countOfMatches (array $array, int $number) {
    $count = 0;
    foreach ($array as $item) {
        if ($item === $number){
            $count++;
        }
    }
    return $count;
}

$example = [1, 2, 4, 5, 34, 54, 5];
$number = 5;

if (matchSearch ($example, $number)){
    echo 'Совпадение найдено';
    echo '<br>';
    echo 'Количество совпадений: ' . countOfMatches($example, $number);
}
else {
    echo 'Совпадений не найдено';
}
ivashkevich 04.09.2019 в 21:23

Отлично

[email protected] 17.09.2019 в 11:32

Добрый день,возник вопрос по уроку,немного непонятен этот момент

echo $isNumberFound ? 'Число найдено' : 'Число не найдено';

Как здесь работает вопрос и почему два значения через двоеточие,я что-то упустил этот момент.

[email protected] 17.09.2019 в 11:35

Я прочёл офф документацию,там как раз описывается этот момент в true и false. Теперь всё понятно.

ivashkevich 18.09.2019 в 17:40

Отлично

dliashchenko 24.09.2019 в 23:20
<?php
function valueSearch($arr, $someMeaning)
{
 foreach($arr as $number){
     if($number == $someMeaning){
         return true;
     }
     return false;
 }
}

$arr = [10, 15, 12, 1, 3, 5];
$someMeaning = 12;

echo valueSearch($arr, $someMeaning) ? 'Значение найдено' : 'Значение не найдено' ;

function numberOfIdenticalValues($arrayValues, $num)
{
    $countItem = 0;
    foreach($arrayValues as $item){
        if($item == $num){
            $countItem++;
        }

    }
    echo "<br/>Всего: ".$countItem;
}

$arrayValues = [10, 1, 12, 1, 3, 5, 1];
$num = 1;

numberOfIdenticalValues($arrayValues, $num);
ivashkevich 27.09.2019 в 17:44

Отсутствуют типы аргументов. Дальше даже смотреть не буду, пока не сделаете как в уроке.

H3licoptero 26.09.2019 в 11:43
  Задание №1.

function getValue(array $arr, int $num)
{
    foreach ($arr as $value) {
        if ($value === $num) {
            return true;
        }
    }
    return false;
}

  Задание №2.

function countOfEnter(array $number, int $x)
{
  $numOfEnter = 0;
    foreach ($number as $value) {
        if ($value === $x) {
            $numOfEnter++;
        }
    }
    return $numOfEnter;
}

$array = [1, 2, 1, 3, 2, 4, 2, 22, 25];
$num = 2;

echo countOfEnter($array, $num);
ivashkevich 27.09.2019 в 17:44

Супер! Отступы только пляшут. Выравнивайте их.

Evilinside 15.10.2019 в 14:18

//Задание 1

function checkVarInArray (array $arr, $var): bool
{
    $flag = false;
    foreach ($arr as $elem) {
        if ($elem === $var) {
            $flag = true;
            break;
        }
    }
    return $flag;

}

$arr = [1, 3, 5, 2, 3, 7, 8, 10, 7];
$var = 13;

var_dump( checkVarInArray($arr,$var));

//Задание 2

function countVarInArray(array $arr, $var): int
{
    $count = 0;
    foreach ($arr as $elem) {
        if ($var === $elem) {
            $count++;
            continue;
        }
    }
    return $count;
}
$arr=[1, 2, 1, 3,4,1,2,3,1];
$var = 1;
echo countVarInArray($arr, $var);
ivashkevich 15.10.2019 в 20:17

Для чего во втором задании continue?

В обоих решениях не указан тип второго аргумента функции.

Evilinside 15.10.2019 в 21:56

Так в заданиях же сказано массив и переменная, которая принимает "какое-то значение", а вдруг массив будет с строковыми элементами? Насчет continue, честно говоря, подумал, что для усвоения материала было бы неплохо написать ( и что именно так и нужно было)

ivashkevich 16.10.2019 в 05:26

Прошу прощения. Значение действительно должно быть любым. А continue не несёт никакого смысла в данном примере. После этой строки и так произойдет переход к следующей итерации.
Имело бы смысл написать так:

function countVarInArray(array $arr, $var): int
{
    $count = 0;
    foreach ($arr as $elem) {
        if ($var !== $elem) {
            continue;
        }
        $count++;
    }
    return $count;
}
Evilinside 16.10.2019 в 08:20

Понял, спасибо!

kvakazuabr 16.10.2019 в 22:11
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 2;

function getBreak(array $arr, int $num)
{
  foreach ($arr as $item) {
    if ($item === $num) {
      return true;
    }
  }
  return false;
}

var_dump(getBreak($array, $number));`

function getContinue(array $arr, int $num) {
  $count = 0;
  foreach ($arr as $item) {
    if ($item === $num) {
      $count++;
    }
  }
  return $count;
}

var_dump(getContinue($array, $number));
ivashkevich 17.10.2019 в 04:52

А сможешь сделать с использованием break и continue?

kvakazuabr 17.10.2019 в 07:07

попробую

function getBreak(array $arr, int $num)
{
  $isNumberFound = false;
  foreach ($arr as $item) {
    if ($item === $num) {
      $isNumberFound =  true;
      break;
    }
  }
  return $isNumberFound;
}

function getContinue(array $arr, int $num) {
  $count = 0;
  foreach ($arr as $item) {
    if ($item !== $num) {
      continue;
    }
    $count++;
  }
  return $count;
}

с break и continue

[email protected] 17.10.2019 в 11:16
1.
<?php

function searchNumber(array $arr, int $x)
{
    $isNumberFound = false;
    foreach ($arr as $item) {
        if ($item == $x) {
            $isNumberFound = true;
            break;
        } else {
            $isNumberFound = false;
        }
    }
    return $isNumberFound;
}

$arr = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$result = searchNumber($arr, 1);
var_dump($result);
2.
<?php

function searchNumber(array $arr, int $x)
{
    $isNumberFound = 0;
    foreach ($arr as $item) {
        if ($item == $x) {
            $isNumberFound ++;
            continue;
        } 
    }
    return $isNumberFound;
}

$arr = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$result = searchNumber($arr, 1);
var_dump($result);
ivashkevich 17.10.2019 в 11:35
else {
            $isNumberFound = false;
        }

Вот это для чего делается?

В чём смысл continue во втором решении? Без него не перейдет к следующей итерации?

[email protected] 17.10.2019 в 11:53

да, else {
$isNumberFound = false;
}, это лишнее и без него работает
и, да без continue тоже считает. по поводу continue не совсем поняла

ivashkevich 17.10.2019 в 11:58

Если интересно как сделать с использованием continue:

function countVarInArray(array $arr, $var): int
{
    $count = 0;
    foreach ($arr as $elem) {
        if ($var !== $elem) {
            continue;
        }
        $count++;
    }
    return $count;
}
sar16520 17.10.2019 в 15:30
<?php 

//1 ex------------------------------

function tr($z, $b){
    $found= 0;
    foreach($z as $c){
        if($c === $b){
            $found++;
        }
    }
    if($found > 0){
        echo('true');
    }else{
        echo('false');
    }
}
$z=[4,2,6,8,0,1,2];
$b=0;
tr($z,$b);

//2 ex------------------------------

function numb($x, $y){
    $result=0;
    foreach($x as $a){
        if($a === $y){
            $result++;
        }
    }
    echo ' found '. $result. ' numbers ', '<br>';
}
$x= [1,6,8,1,3,0,12,1,4,5,1,7,1];
$y=1;
numb($x, $y);

Как же я задолбался с 1м заданием, это просто... Долго не мог понять как вывести 'true' или 'false' один раз, а не все подряд)

ivashkevich 17.10.2019 в 16:35

А выводить ничего не надо. Перечитайте задание.

Где типы аргументов? Проходите урок по функциям снова.

sar16520 18.10.2019 в 09:37
?php 

//1 ex ======================================

function tr(array $x, int $y){
    $result= 0;
    foreach($x as $a){
        if($a === $y){
            $result =true;
        }
        var_dump($result);
        $result =false;
    }
}
tr([1,6,9,1,4,12], 1);

//2 ex ======================================

function sum(array $x, int $y){
    $result=0;
    foreach($x as $a){
        if($a === $y){
            $result++;
        }
    }
    return($result);
}
echo sum([1,2,3,1,6], 1);

Вот так?

ivashkevich 18.10.2019 в 09:44
  1. Почему в переменной сначала числа, а потом булево значение? Тип данных не следует мешать. Функция опять ничего не возвращает. Для чего там var_dump? Всё что можно собрали в кучу. Читайте урок ещё раз.
  2. return($result); - что за круглые скобки? Для чего?
sar16520 19.10.2019 в 12:10
<?php 

//1 ex ======================================

function tr(array $x, int $y)
{
  foreach ($x as $a) {
    if ($a === $y) {
      return true;
    }
  }
  return false;
}

var_dump (tr([1,4,6,9,5,2], 1));

//2 ex ======================================

function sum(array $x, int $y){
    $result=0;
    foreach($x as $a){
        if($a === $y){
            $result++;
        }
    }
    return($result);
}
echo sum([1,2,3,1,6,1], 1);
  1. Вот сейчас должно быть точно правильно, если я правильно понял.
  2. Незнаю, я ввожу просто в редакторе кода 'ret', жму TAB, и редактор сам мне выводит, чтобы я писал в груглых скобках)
ivashkevich 19.10.2019 в 12:23
  1. Ок
  2. Что за редактор такой, поставьте PhpStorm.
andreskrip 11.11.2019 в 14:49

Хотел поинтересоваться: уже не первый урок замечаю, что при сравнении чисел используется оператор тождественности (===) вместо обычного равенства (==). По идее же в предыдущих уроках говорилось, что операторы равенства приводят операнды к одному типу, а оператор тождественности наоборот проверяет типы операндов. В чем необходимость проверять в условии помимо самого значения еще и тип данных?

ivashkevich 11.11.2019 в 19:51

Так более надёжно, приучает всегда думать о том, с какими данными мы работаем.

andreskrip 11.11.2019 в 16:01

В принципе я сам немного понял ответ для своего предыдущего вопроса, попробовав усложнить первую задачу тем, что в массиве присутствует несколько типов данных (не знаю, кстати, какой тип данных тогда указывать в определении функции, т.к. вы меня в прошлых дз просили это делать).

И если сравнивать не тождественно, то тогда получается, что при поиске строки 'приветик' интерпретатор просто переводит строку в другой тип данных и выдает, что значение найдено, хотя его в массиве не присутствует. Но при тождественном сравнении, все проходит корректно и функция возвращает 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);
ivashkevich 11.11.2019 в 19:55

Функция, принимающая в качестве аргумента всё подряд - это плохая функция. Исторически так сложилось, что PHP позволяет это делать. Но сейчас все стараются писать со строгой типизацией. Так просто меньше ошибок.

andreskrip 11.11.2019 в 21:21

Понял, учту в следующих заданиях. Спасибо)

babur 12.11.2019 в 11:08

Здрасьте еще раз! ДЗ проверьте пож?

//first task
$array = [2, 3, 6, 1, 23, 2, 1, 7, 1, 15];

function searchNum($array, $number){
    $isNumberFound = false;
    foreach ($array as $item) {
        if ($item === $number) {
            $isNumberFound = true;
        }
    }
    return $isNumberFound ? 'Число найдено' : 'Число не найдено';
}

echo searchNum($array, 1);

//second task
function searchNum($arr, $num){
    $isNumber = 0;
    foreach ($arr as $item) {
        if ($item === $num) {
            $isNumber++;
        }
    }
    return $isNumber;
}

echo searchNum($array, 1);
ivashkevich 12.11.2019 в 19:47

Где типы аргументов?
Скобка, открывающая тело функции, пишется на следующей строке.
Первая функция не должна возвращать строку.
Переменные с префиксом is... используются для булевых значений.

[email protected] 25.11.2019 в 22:26
<?php
$arr = [1, 2, 3, 1, 5, 6, 1, 8, 9];
$number = 1;

function multiplerNumber(array $x, int $y)
{
    $k = 0;
    for ($i = 0; $i <= array_key_last($x); $i++) {
        if ($x[$i] === $y) {
            $k++;
            continue;
        }
    }
    return $k;
}

echo 'Кол-во одинаковых чисел в массиве: ' . multiplerNumber($arr, $number);

Кстати, хотел узнать, что лучше использовать for или foreach? Что менее затратно для сервера и обработки?

ivashkevich 26.11.2019 в 10:16

Использовать array_key_last($x); вместо count() - то ещё извращение. Да и зачем здесь for вместо foreach, тоже непонятно. В программировании нужно всё упрощать, а не усложнять.

По вашему вопросу - разницы нет. Нужно использовать то, что больше подходит.

[email protected] 30.11.2019 в 00:54

Хорошо, спасибо, буду знать!

ivashkevich 01.12.2019 в 09:28

Пожалуйста. Рекомендую переделать ДЗ с учётом рекомендаций.

Salexandr 15.12.2019 в 20:47
function isNumberInArray($arr, int $number)
{
    foreach ($arr as $item) {
        if ($item === $number) {
            return true;
        }
    }
    return false;
}
var_dump(isNumberInArray([1, 21, 17, 30], 17));
ivashkevich 17.12.2019 в 13:26

Ок. Только для массива тоже нужно указать тип аргумента.

Salexandr 18.12.2019 в 01:38

function isNumberInArray(int $arr, int $number) - ок! спасибо.

ivashkevich 18.12.2019 в 01:50

Отлично

Salexandr 15.12.2019 в 20:53
function CountOfNumberInArray($arr, int $number)
{
    $i = 0;
    foreach ($arr as $item) {
        if ($item === $number) {
            $i++;
        }
    }
    return $i;
}
var_dump(CountOfNumberInArray([1, 21, 1, 30,1], 1));
ivashkevich 17.12.2019 в 13:27

Имена функций пишутся с маленькой буквы!
Тип первого аргумента не указан.

YuraG 15.12.2019 в 23:27
# вариант 1
function foundNumberInArray (array $arr, int $numb)
{
    foreach ($arr as $item) {

        if ($item === $numb) {
            return true;
        }
    }
    return false;
}

# вариант 2

function foundNumberInArray (array $arr, int $numb)
{
    return in_array($numb, $arr);
}

#задание 2

function numberInArray (array $arr, int $numb)
{
    $value = 0;

    foreach ($arr as $item) {

        if ($item === $numb) {
            $value++;
            continue;
        }

    }
    return 'Number ' . $numb . ' in array ' . implode($arr, ' ') . ' is ' . $value . '.';
}
ivashkevich 17.12.2019 в 13:29

Зачем во втором задании continue? Функция не должна возвращать строку, перечитайте задание.

YuraG 17.12.2019 в 18:28
function numberInArray(array $arr, int $numb): int
{
    $value = 0;

    foreach ($arr as $item) {

        if ($item === $numb) {
            $value++;
        }

    }
    return $value;
}

подправил

ivashkevich 17.12.2019 в 18:47

Супер!

eNergy 12.01.2020 в 21:20
<?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;
}
ivashkevich 13.01.2020 в 08:38

1.

    if ($isNumberFound) {
        return true;
    }
    return false;

Можно просто

    return $isNumberFound;
  1. ОК
  2. Второй вариант действительно предпочтительнее.

В целом всё ок, но названия переменных x и y ни о чем не говорят, их стоит заменить на что-то, имеющее смысл.

[email protected] 01.02.2020 в 20:22
<?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;

А почему так не работает? $i остается равным 0.

<?php

for ($i=0; $i>=-15; $i--) {
    $array[] = $i;
    echo $array[$i], ' ';
}
echo '<br>';
ivashkevich 04.02.2020 в 13:08

ДЗ не выполнено. Нужно было написать функции.
Конкатенация строк выполняется с помощью точки, откуда вы взяли запятую?

[email protected] 05.02.2020 в 22:13

Вот функции:

<?php

/*напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.*/

function TrueNumberInArray ($array, $trueNumber) {
   $equality = false;
   foreach ($array as $testNumber) {
       if ($testNumber === $trueNumber) {
          $equality = true;
          break;
       }
   }
   echo $equality ? 'Число '. $trueNumber. ' найдено' : 'Число '. $trueNumber. ' не найдено';
   echo '<br>';   
}

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 ($reseachedArray, $coincidenceNumber) {
   $ingoings = 0;   
   foreach ($reseachedArray as $coincidence) {
       if ($coincidence !== $coincidenceNumber) {
          continue;
       }   
       else {
          $ingoings++;     
       }       
   }
   echo 'Число вхождений числа ', $coincidenceNumber, ' в массив равно ', $ingoings;
   echo '<br>';
}

$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); 

Конкатенация строк выполняется с помощью точки, откуда вы взяли запятую?

Из какого-то из прошлых уроков. Не помню. Работает же.

А почему так не работает? Почему $i остается равным 0?

<?php

for ($i=0; $i>=-15; $i--) {
    $array[] = $i;
    echo $array[$i], ' ';
}
echo '<br>';
ivashkevich 06.02.2020 в 03:05

Где типы аргументов? Имена функций пишутся с маленькой буквы. Скобка, открывающая тело функции, пишется на следующей строке. В задании сказано что функция должна возвращать значение, у вас она ничего не возвращает.
Советую начать курс с самого начала и быть более внимательным. Как в изучении материала, так и в выполнении ДЗ.

Из какого-то из прошлых уроков. Не помню.

Неправда. Не было такого.

Если будете вместо конкатенации продолжать писать запятые, будете сами проверять домашние задания :) Я же написал вам, что нужно использовать точку, вы мне в ответ на этот комментарий опять запятую пишете. Что за неуважение? :)

[email protected] 07.02.2020 в 21:32

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

<?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);
ivashkevich 12.02.2020 в 12:22

Ок, если не собираетесь эти навыки применять в работе, то моя душа спокойна) Делайте что хотите и как хотите)

[email protected] 15.02.2020 в 00:48

Смотря что понимать под работой. Мне надо научиться управлять базой данных и уметь админить сайт. В перспективе это должен быть онлайн-магазин, возможно, с форумом.

Apatit 20.02.2020 в 15:58

Вот первое задание:

<?php
$array = [];
$number = 0;
function presenceOfArgument($array, $number)
{
    foreach ($array as $item) {
        if ($item === $number) {
            return true;
            break;
        }
    }
    return false;
}

$a = presenceOfArgument([4, 5, 8, 12], 12);
var_dump($a);
?>
ivashkevich 21.02.2020 в 06:29
            return true;
            break;

После return ничего не выполнится, смысл в break?

presenceOfArgument($array, $number)

Где типы аргументов?

Apatit 21.02.2020 в 09:43

Добрый день!
Ошибся, исправил.

<?php
$array = [];
$number = 0;
function presenceOfArgument(array $array, int $number)
{
    foreach ($array as $item) {
        if ($item === $number) {
            return true;
        }
    }
    return false;
}

$a = presenceOfArgument([4, 5, 8, 10, 12], 4);
var_dump($a);
?>

Второе задание

<?php
$array = [];
$number = 0;
function numberOfOccurrences(array $array, int $number)
{
    $count = array_count_values($array);
    return $count[$number];
}

$total = numberOfOccurrences([5, 5, 5, 6, 6, 8, 10, 12], 5);
echo($total);
?>

Второй вариант

<?php
$array = [];
$number = 0;

function numberOfOccurrences(array $array, int $number)
{
    $a = 0;
    foreach ($array as $item) {
        if ($number == $item) {
            $a++;
        }
    }
    return $a;
}

echo numberOfOccurrences([5, 5, 5, 6, 6, 8, 10, 12], 6);
?>
ivashkevich 23.02.2020 в 19:18

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

Evilinside 10.03.2020 в 17:43
//напишите функцию, принимающую на вход 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);
ivashkevich 10.03.2020 в 18:52

Супер! Только скобка, открывающая тело функции, пишется на следующей строке.

Evilinside 10.03.2020 в 19:05

Спасибо, учту

[email protected] 17.03.2020 в 13:03

Первое задание (отредактировано - сам у себя же ошибку нашёл):

$arr = [6, 5, 9, 5, 6, 1, 2, 2, 7, 8 ,3, 4];
$num = 5;
function getNumber(array $arr, int $num): bool
{
    $isNumberFound = false;
    foreach ($arr as $value) {
        if ($value === $num) {
            $isNumberFound = true;
            break;
        }
    }
    return $isNumberFound;
}
echo getNumber($arr, $num) ? 'Есть число (true)' : 'Нет числа (false)';
ivashkevich 17.03.2020 в 14:07

Нужно указать тип аргумента для $arr.
Что за $get? Назовите более подходящим именем.

echo 'Сравниваем с числом элемент ' . $value . '<br>';

Функция не должна ничего выводить. Только возвращать.

echo getNumber ($arr, $num)

Пробел после getNumber не нужен.

[email protected] 17.03.2020 в 14:02

Второе задание:

$arr = [6, 5, 9, 5, 6, 1, 2, 2, 7, 8 ,3, 4];
$num = 2;
function getEnter(array $arr, int $num): int      //вычисляем кол-во входов числа в заданный массив
{
    $count = 0;
    foreach ($arr as $value) {
        if ($value === $num) {
            $count++;
        }
    }
    return $count;
}
echo 'Количество входа в массив числа ' . $num . ' : ' . getEnter($arr, $num);
ivashkevich 17.03.2020 в 14:10

Те же ошибки

function getEnter ($arr, int $num)

Лишний пробел. Тип первого аргумента не указан.

Опять непонятное имя $get. Почему метод нормально назвали, а переменную как попало?

$get ++;

Лишний пробел

continue;

Для чего? Что это даёт?

[email protected] 17.03.2020 в 15:25

Спасибо, исправил))

ivashkevich 17.03.2020 в 19:46

Красота! Так держать!

[email protected] 26.03.2020 в 18:08
<?php
function numberOne( array $one, int $two){
    foreach ($array as $num){
        if ($num === $two){
            return true;
        }
    }
    return false;
}
?>
[email protected] 26.03.2020 в 18:24
<?php
$one =[1,3,1,2];
function numberOne( array $one, int $two)
{
    $i = 0;
    foreach ($one as $item) {
        if ($two == $item) {
            $i++;
        }
    }
    return $i;
}
echo numberOne($one,1);
?>
ivashkevich 27.03.2020 в 15:09

CTRL+ALT+L! Закрывающий тег не нужен!

ivashkevich 27.03.2020 в 15:08

Имена аргументов никуда не годятся. Перечитайте урок про переменные, в частности о том, как нужно их именовать.

studentDev 30.03.2020 в 10:15
//напишите функцию, принимающую на вход 2 аргумента - массив и какое-либо значение. Функция возвращает true, если переданное значение присутствует в массиве и false - если нет.

function searchOperators(int $x, array $mainArray) {
         foreach($mainArray as $key) 
             {
             echo "Result >>>  " . $key . "</br>";
             if($x === $key) {
                 return true;
             }
         }
      return false;
     }
ivashkevich 30.03.2020 в 15:57

searchArrayFunction - не нужно к имени функции добавлять слово Function

$arrayFunction - не указан тип аргумента, значение по умолчанию для подобной функции не уместно.

function searchArrayFunction(int $x, $arrayFunction = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) {

Фигурная скобка, открывающая тело функции, переносится на следующую строку.

foreach($arrayFunction as $keyFunction) {

Имена переменных никуда не годятся.

echo "searchArrayFunction >>> " . $keyFunction . "</br>";

Функция по заданию не должна ничего выводить, она должна только возвращать.

$valid = false;

Зачем на каждой итерации задавать одно и то же значение? Это нужно сделать один раз еще до начала цикла.

return $valid ? 'TRUE' : 'FALSE';

Должно возвращаться булево значение, а не строка!

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

studentDev 30.03.2020 в 16:32

Перерывы связанны из за временных трудностей в учёбе. Буду исправляться :)

studentDev 30.03.2020 в 13:16
<?php
     function searchNumber(array $array,int $x) {
         $count = 0;
         foreach($array as $key) 
         {
             if($key === $x) {
                 $count++;
             }
         }
         return $count;
     }
     echo searchNumber([1, 2, 1, 3], 1); //Итог 2 ;)
?>

Пойду поиграюсь ещё с кодом :D
Спасибо за урок! :)

ivashkevich 30.03.2020 в 16:10
     function searchNumber(array $array,int $x) {

Пробел после запятой. Фигурная скобка на следующей строке.

$valueNumber - правильнее назвать $count

             return $valueNumber;

куда-то вправо уехало, нужно выровнять.

В целом алгоритм ОК

WarLikeLaux 06.04.2020 в 15:29
function inArray(array $array, $item) {
    // $result = false;
    foreach ($array as $object) {
        if ($object === $item) {
            return true;
            // $result = true;
            // break;
        }
    }
    return false;
    // return $result;
}
ivashkevich 06.04.2020 в 16:11
function inArray(array $array, $item) {

{ - на новой строке!

В остальном отлично

WarLikeLaux 06.04.2020 в 15:33
function countInArray(array $array, $item) {
    $count = 0;
    foreach ($array as $object) {
        if ($object === $item) {
            $count++;
        }
    }
    return $count;
}
ivashkevich 06.04.2020 в 16:12

Отлично!

Timurik 09.04.2020 в 20:56
function numberSearch (array $arrayInt, int $numberInt) {
    $numberSearchResult = false;
    foreach ($arrayInt as $number) {
        if ($number === $numberInt) {
            $numberSearchResult = true;
            break;
        }
    }
    return $numberSearchResult; 
}

function numberSearchFound (array $arrayInt, int $numberInt) {
    $numberFound = 0;
    foreach ($arrayInt as $number) {
        if ($number === $numberInt) {
            $numberFound ++;
        }
    }
    return $numberFound;
}

$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 1;

echo numberSearch ($array, $number) ? 'Число найдено' : 'Число не найдено';
echo '<br>';
echo 'Количество совпадений - '. numberSearchFound ($array, $number);

Результат:
Число найдено
Количество совпадений - 2

Можно ещё концовку поменять на:

if (numberSearch ($array, $number) == true) {
    echo 'Число найдено';
    echo '<br>';
    echo 'Количество совпадений - '. numberSearchFound ($array, $number);
} else {
    echo 'Число не найдено';
}
ivashkevich 10.04.2020 в 12:50

Скобка, открывающая тело функции, пишется на новой строке.

if (numberSearch ($array, $number) == true) {

Не нужно сравнивать с true, если там true, условие и так выполнится

Timurik 10.04.2020 в 13:26

Всё исправил:

function numberSearch (array $arrayInt, int $numberInt) 
{
    $numberSearchResult = false;
    foreach ($arrayInt as $number) {
        if ($number === $numberInt) {
            $numberSearchResult = true;
            break;
        }
    }
    return $numberSearchResult; 
}

function numberSearchFound (array $arrayInt, int $numberInt) 
{
    $numberFound = 0;
    foreach ($arrayInt as $number) {
        if ($number === $numberInt) {
            $numberFound ++;
        }
    }
    return $numberFound;
}

$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 1;

if (numberSearch ($array, $number)) {
    echo 'Число найдено';
    echo '<br>';
    echo 'Количество совпадений - '. numberSearchFound ($array, $number);
} else {
    echo 'Число не найдено';
}
ivashkevich 10.04.2020 в 13:31

Отлично

Vladimir96 10.04.2020 в 01:43
function getValue(array $array, int $value): bool
{
    foreach ($array as $index) {
        if ($value === $index) {
            $result = true;
            break;
        }
    }
    return false;
}

function getIdenticalValue(array $array, int $value): int
{
    $count = 0;
    foreach ($array as $index) {
        if ($value !== $index) {
            continue;
        }
        $count++;
    }
    return $count;
}
ivashkevich 10.04.2020 в 12:54
    foreach ($array as $index) {

Некорректное имя для переменной $index, лучше назвать $item

$value = true;

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

Неправильно работает, всегда возвращает false.

По второй задаче то же замечание про имя переменной, но функция работает.

[email protected] 10.04.2020 в 13:54

Создается ощущение, что я сделал что-то не так, поскольку ни 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;
}
ivashkevich 11.04.2020 в 20:43

Отлично. Функции работают. Решения с break и continue можно посмотреть в комментариях.

n.yurasheva 11.04.2020 в 15:18
<?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);
ivashkevich 11.04.2020 в 21:32

Супер!

Fill 13.04.2020 в 09:18
<?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));
ivashkevich 13.04.2020 в 14:54

Отлично

[email protected] 13.04.2020 в 17:07

1 задачка

<?php

function isInArray(array $arr, int $reqNumber) {
    foreach ($arr as $item) {
        echo "Is $item equal to $reqNumber?<br>";
        if ($item === $reqNumber) {
            return true;
        }
    }
    return false;
}
$ary = [5, 7, 3, 87, 92];
$req = 87;

echo isInArray($ary, $req) ? 'TRUE' : 'FALSE';

2 задачка

<?php

function howManyInArray(array $arr, int $reqNumber) {
    $count = 0;
    foreach ($arr as $item) {
        if ($item != $reqNumber) {
            continue;
        }
        $count++;
    }
    return $count;
}

$arrBumbarr = [1, 3, 5, 1, 6, 1, 77];
$reqy = 1;

echo howManyInArray($arrBumbarr, $reqy);

И для 1 задачки необязательно я так понял ставить break, потому что если что-то true - программа сама останавливается и возвращает true

ivashkevich 14.04.2020 в 16:55

Функции не должны ничего выводить.

Скобка, открывающая тело функции пишется на следующей строке.

По логике всё ок.

[email protected] 14.04.2020 в 17:06

Выводить, в смысле, в функции не должно быть echo? Или возвращать не должны ничего? Просто не понял

ivashkevich 14.04.2020 в 19:45

Выводить) можете просто перечитать задание, там написано что нужно делать функции. Лишних действий в нее добавлять не надо)

[email protected] 14.04.2020 в 12:01

Добрый день!

<?php

function findInArrayVar($array, $x)
{
    foreach ($array as $item) {
        if ($item === $x) {
            $found = true;
            break;
        } else
            $found = false;
    }
    return $found;
}

function countInArray($array, $x)
{
    $found = 0;
    foreach ($array as $item) {
        if ($item === $x) {
            $found = $found + 1;
        }
    }
    return $found;
}

$x = 1;
$array = [5, 2, 1, 6, 15, 1, 8, 0, 1];
$resultVar = findInArrayVar($array, $x);
var_dump($resultVar);
$resultCount = countInArray($array, $x);
var_dump($resultCount);
ivashkevich 14.04.2020 в 19:40

Где типы аргументов??

        } else
            $found = false;
    }

Для блоков if-else всегда пишутся фигурные скобки.

$found = $found + 1;

Замените на

$found++;
[email protected] 15.04.2020 в 09:05

Доброе утро!

<?php

function findInArrayVar($array, int $x)
{
    foreach ($array as $item) {
        if ($item === $x) {
            $found = true;
            break;
        } else
            {
            $found = false;
        }

    }
    return $found;
}

function countInArray($array, int $x)
{
    $found = 0;
    foreach ($array as $item) {
        if ($item === $x) {
            $found++;
        }
    }
    return $found;
}

$x = 1;
$array = [5, 2, 1, 6, 15, 1, 8, 0, 1];
$resultVar = findInArrayVar($array, $x);
var_dump($resultVar);
$resultCount = countInArray($array, $x);
var_dump($resultCount);
ivashkevich 15.04.2020 в 11:35
findInArrayVar($array

Тип аргумента не указали

В остальном ок

Developer 21.04.2020 в 16:23

Задача 1

<?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);
ivashkevich 21.04.2020 в 18:32

ifIsVariable правильнее назвать hasValue

Написал так : ? 'true' : 'false', потому что без этого у меня выводиться просто 1. А если с функцией var_dump() то выводиться bool(true). А так тут просто как в задании true.

В задании речь была только о том, чтобы функция возвращала это значение, что вы и сделали. Выводить можно var_dump-ом.

В целом отличная домашка.

[email protected] 23.04.2020 в 20:41
<?php
$arr = [1, 4, 7, 9, 67, 83, 2, 5, 4, 4];

// Первое задание, 1 способ
function numberFound (array $arr, int $x)
{
    $isFound = false;
    foreach ($arr as $item) {
        echo $item. '<br>';
        if ($x === $item) {
            $isFound = true;
            echo 'Found';
            break;
        }
    }
    return $isFound;
}
numberFound($arr, 7);

// Первое задание, 2 способ
function numberFound2 (array $arr, int $x)
{
    foreach ($arr as $item) {
        echo $item. '<br>';
        if ($x === $item) {
            return true;
        }
    }
    return false;
}
echo numberFound2($arr, 7) ? 'Found': 'Not found';

// Второе задание
function howMuchOccurrence (array $arr, int $x)
{
    $i = 0;
    foreach ($arr as $item) {

        if ($item === $x) {
            $i++;
        }
    }
    echo $i;
}
howMuchOccurrence($arr, 4);
ivashkevich 24.04.2020 в 04:48

Функции не должны ничего выводить, они должны возвращать.

[email protected] 24.04.2020 в 19:47
// 1
function inArray(array $array, int $x) {
    foreach($array as $into) {          
        if ($into === $x) {             
            return true;                
        }                               
    }                                   
      return false;                       
  }                                       
//2
function countInArray(array $array, int $x) {
    $i = 0;                                  
    foreach($array as $item) {               
     if ($item == $x) {                      
         $i++;                               
     }                                       
    }                                        
    return $i;                               
}                                            
ivashkevich 24.04.2020 в 20:27

Всё ок, только фигурная скобка, открывающая тело функции, пишется на следующей строке.

titelivus 29.04.2020 в 11:56

1.

<?php

$fruits = ['Apple', 'Mango', 'Lemon', 'Banana', 'Grape'];

function isInArray(array $arr, $value) {
    foreach ($arr as $item) {
        if ($item == $value) {
            return true;
        }
    }
    return false;
}

echo 'Арубз в списке фруктов ' . (isInArray($fruits, 'Watermelon') ? 'есть.' : 'нету =(.');
echo '<br>';
echo 'Банан в списке фрутокв ' . (isInArray($fruits, 'Banana') ? 'есть.' : 'нету =(.');

2.

<?php

$numbers = [1, 1, 2, 5, 7, 1, 9, 3, 1];

function entry(array $arr, $value) {
    $valueCount = 0;
    foreach ($arr as $item) {
        if ($item == $value) {
            $valueCount++;
        }
    }

    return $valueCount;
}

echo 'Число вхождений числа 1 в массиве = ' . entry($numbers, 1) . '.';
ivashkevich 29.04.2020 в 20:16

Отлично

Stimi 30.04.2020 в 16:28
<?php
$num = [4, 12 , 7, 63, 14, 9];
$search = 4;
function numSearch ($num, $search)
{
    foreach ($num as $item){
        if ($item == $search){
           return true;
        } else {
            return false;
        }
    }
}

echo var_dump (numSearch($num, $search));

$arr = [11, 34 , 7 , 7 , 8 , 41, 7];
$num = 7;

function arrNum ($arr, $num)
{
    $counter = 0;
    foreach ($arr as $item) {
        if ($item == $num){
            $counter++;
        }
    }
    return $counter;
}
var_dump(arrNum($arr, $num));
ivashkevich 30.04.2020 в 19:11

Где типы аргументов?
При $search = 12; возвращает false

Stimi 30.04.2020 в 23:11
<?php
$num = [4, 12, 7, 63, 14, 9];
$search = 12;
function numSearch(array $num, int $search)
{
    foreach ($num as $item) {
        if ($item == $search) {
            return true;
        }
    }
    return false;
}

echo var_dump(numSearch($num, $search));
ivashkevich 01.05.2020 в 15:03

Отлично!

ivashkevich 30.04.2020 в 19:11

И оформление делайте как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

2yeezy4me 01.05.2020 в 09:23

1.

<?php
$array = ['sky', 'land', 'water'];
$item = 'land';
function searchItem(array $array, string $item)
{
    foreach ($array as $word) {
        if ($word === $item) {
            return true;
        }
    }
    return false;
}

echo 'Ишем слово ' . $item;
echo '<br>';
echo 'Cлово ' . (searchItem($array, $item) ? 'найдено.' : 'не найдено.');

2.

<?php
$array = [1, 2, 3, 1, 1, 5, 6, 1];
$number = 1;
function numberWeNeed(array $array, float $number)
{
    $numberCount = 0;
    foreach ($array as $lookingForNumber) {
        if ($lookingForNumber == $number) {
            $numberCount++;
        }
    }
    return $numberCount;
}

echo 'Количество числа ' . $number . ': ' . numberWeNeed($array, $number);
ivashkevich 01.05.2020 в 15:13

Где типы аргументов?

$isItemFound = false;

Для чего?

echo 'Ищем слово ' . $word . '<br>';

Функция по заданию должна только возвращать true/false, ну нужно ничего выводить.

Почему не возвращается false, если ничего не найдено?

$number = 1;
$isNumberFound = 0;

Для чего?

$isNumberFound - почему такое название для переменной с числовым значением? is для boolean применяется.

$isNumberFound += 1;

нужно заменить на

$isNumberFound++;
        }

    }

Лишний перенос

На троечку с минусом домашка.

2yeezy4me 02.05.2020 в 18:00

Поправил, проверь, пожалуйста.

ivashkevich 03.05.2020 в 20:46

Теперь отлично

[email protected] 02.05.2020 в 12:19

добавил типы аргументов

$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
function isNumberFound(array $array, int $value)
{
    foreach ($array as $item) {
        if ($item == $value) {
            return true;
        }
    }
    return false;
}

echo isNumberFound($array, 23) ? 'Число найдено' : 'Число не найдено';

$array = [2, 4, 6, 8, 4, 10, 12, 4, 4, 5, 1, 7, 4];
function sumNumber(array $array, int $value)
{
    $n = 0;
    foreach ($array as $item) {
        if ($item == $value) {
            $n++;
        }
    }
    return $n;
}

echo sumNumber($array, 14);
ivashkevich 02.05.2020 в 16:24

Где типы аргументов?

            $n++;
            continue;
            return $n;

Расскажите подробно, для чего здесь:

  • return
  • continue
[email protected] 02.05.2020 в 22:27

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

ivashkevich 03.05.2020 в 20:55

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

[email protected] 04.05.2020 в 22:18

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

ivashkevich 06.05.2020 в 13:40

Теперь ок

Sviatoslav 02.05.2020 в 20:27
<?php
// Задание 1

function isValue($array, $value)
{
    $result = false;
    foreach ($array as $arrValue) {
        if ($value == $arrValue) {
            $result = true;
            break;
        }
    }
    return $result;
}

// Задание 2

function countValue($array, $value)
{
    $result = 0;
    foreach ($array as $arrValue) {
        if ($value == $arrValue) {
            $result++;
        }
    }
    return $result;
}
ivashkevich 03.05.2020 в 20:53

Где типы аргументов?

[email protected] 03.05.2020 в 09:53
<?php 
$array = [2,5,4,3,12];
$numb = 5;
$isNumberFound = false;
function getCountOfArg($array, int$numb)
{
    foreach ($array as $value) {
        if ($value === $numb) {
            return true;
        }
    }
    return false;
}
var_dump(getCountOfArg($array, $numb));

<?php 
$array = [4,4,4,2,2,1,3,12];
$numb = 4;

function getCountOfNumb($array, $numb)
{
    $i = 0;
    foreach ($array as $value) {
        if ($value === $numb) {
            $i ++;
        }
    }
    return $i;
}
 echo 'Число вхождений' . '=' . getCountOfNumb($array,$numb);
ivashkevich 03.05.2020 в 21:00

Я уже устал от того, что ваш код каждый раз не отформатирован. Оформление делайте как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

int$numb

Пробел здесь обязателен!

Где типы аргументов?
Уберите лишние переменные, зачем они здесь?

IePyton 10.05.2020 в 11:20
<?php

//первое задание

function checkNumber($array, $intCount)
{
    $trueOrFalse = false;
    foreach ($array as $value) {
        if ($value == $intCount) {
            $trueOrFalse = true;
            break;
        }
    }
    echo $trueOrFalse ? 'true' : 'false';
}

$array = [37, 1, 4, 6, 6, 4, 7, 90, 37];
$intCount = 5;

checkNumber($array, $intCount);

<?php

//второе задание

function checkSumOfNumber ($arrayCont, $number)
{
    $sum = 0;
    foreach ($arrayCont as $value) {
        if ($value == $number) {
            $sum++;
            continue;
        }
    }
    echo $sum;
}

$arrayCont = [1, 2, 1, 4, 3, 1];
$number = 1;

checkSumOfNumber ($arrayCont, $number);
ivashkevich 10.05.2020 в 18:26

Где типы аргументов?

Проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

Функции должны возвращать, а не выводить, перечитайте задание.

IePyton 12.05.2020 в 14:57

Спасибо, замечания по делу были
<?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));

ivashkevich 13.05.2020 в 07:19

Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.

IePyton 13.05.2020 в 07:45
<?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));
ivashkevich 14.05.2020 в 12:45

Первая функция должна возвращать булево значение, а не строку.

И проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

IePyton 14.05.2020 в 13:00
<?php

//первое задание

function checkNumber(array $array, int $intCount)
{
    $trueOrFalse = false;
    foreach ($array as $value) {
        if ($value == $intCount) {
            $trueOrFalse = true;
            break;
        }
    }
    return $trueOrFalse;
}

$array = [37, 1, 4, 6, 6, 4, 7, 90, 37];
$intCount = 4;

var_dump(checkNumber($array, $intCount));
ivashkevich 14.05.2020 в 15:11

Отлично. На досуге почитайте что-нибудь про именование переменных

Kennard 16.05.2020 в 01:36
<?php
// 1

$array = [1, 70, 100];

function searchNumber(array $array, int $needNubmer) {
    foreach ($array as $item) {
        if ($item == $needNubmer) {
            return true;
        }
    }
    return false;
}
Kennard 16.05.2020 в 01:42
<?php
// 2

$array = [1, 1, 5, 8, 1];
$count = 0;

function myf (array $array, int $needNumber) {
    foreach ($array as $item) {
        if ($item === $needNumber) {
            $count++;
        }
    }
    return $count;
}

echo myf($array, 1);
Kennard 16.05.2020 в 03:08

Задача 3:
https://codingzone.io/problems/3/solution/409
Как засунуть данные из строки в массив нашел на php.net, но раз такое в задании, то стоило бы об этом рассказать в уроке
Задача 4:
https://codingzone.io/problems/4/solution/411

Код конченный, но по другому я не придумал, буду рад узнать правильную версию кода :)
а еще когда я в шторме писал && вместо and, то ничего не работало

ivashkevich 16.05.2020 в 12:27

Потому что там не && нужен, а запятая. Прочитайте в документации дополнительно про цикл for.

Как засунуть данные из строки в массив нашел на php.net, но раз такое в задании, то стоило бы об этом рассказать в уроке

Нет, в этом и смысл, учитесь самостоятельно искать необходимую информацию. В уроках - минимальная база. Программисту же нужно учиться гуглить.

ivashkevich 16.05.2020 в 12:24

После имени функции пробел не ставится.

Перед началом цикла переменную $count нужно определить. К чему инкремент-то применять, если переменная впервые по коду встречается.

Проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L.

Kennard 16.05.2020 в 12:37

Такой код у меня вышел спустя где-то минут 30 отладки, сначала получалось что вместо 6 первых хначений выводит 12, потом вместо 6 выводило 7, был момент что для 6 первых значений выводило 6, а для 3 выводило 4. И только такой вариант как я скинул начала работать похоже на то, что в задании

Kennard 16.05.2020 в 13:08

стоп, у меня же определена переменная перед началом цикла

ivashkevich 16.05.2020 в 14:05

Она объявлена вне функции, и внутри функции недоступна

Kennard 16.05.2020 в 15:47

понял

ivashkevich 16.05.2020 в 12:22

Скобка, открывающая тело функции, пишется на новой строке.

Hellbound 18.05.2020 в 21:54

Задание 1

<?php

function isNumberHere(array $arr, int $x)
{
    foreach ($arr as $y) {
        if ($x == $y) {
            return true;
        }
    }
    return false;
}

$numbers = [1, 2, 3, 4, 5];
$num = 3;

var_dump(isNumberHere($numbers, $num));

Задание 2

<?php

function numberCount(array $arr, int $x)
{
    $count = 0;
    foreach ($arr as $elem) {
        if ($elem == $x) {
            $count++;
        }
    }
    return $count;
}

$numbers = [1, 2, 4, 5, 2, 4, 5, 5, 6, 1, 1, 3, 2, 1];

echo numberCount($numbers, 2);

Задание 3 - https://codingzone.io/ru/problems/3/solution/573

Задание 4 - https://codingzone.io/ru/problems/4/solution/580

Жаль, что на CodingZone нельзя посмотреть какое-нибудь образцовое решение, а то у меня задание с числами Фибоначчи через одно место получилось, а как-то по-другому сделать у меня ума не хватило.

ivashkevich 19.05.2020 в 06:11

Решение вполне ок, но можно обойтись одним циклом. Ок, я постараюсь добавить "образцы" на CodingZone

superbobr 19.05.2020 в 21:32
<?php

function inArray(array $a, $b)
{
    foreach ($a as $key => $value) {
        if ($value === $b) {
            return true;
        }

    }
    return false;
}
ivashkevich 20.05.2020 в 08:04

Где тип второго аргумента?

superbobr 19.05.2020 в 21:42
<?php
function countInArray(array $a, $b)
{
    $counter = 0;
    foreach ($a as $key => $value) {
        if ($value === $b) {
            $counter += 1;
        }

    }
    return $counter;
}

$arr = [1, 2, 1, 3];
echo countInArray($arr, 1);
echo '<br>';
echo countInArray($arr, 8);
ivashkevich 20.05.2020 в 08:06

Тип аргумента потеряли. В рамках одного урока достаточно одного комментария со всеми решениями. Мне так проще будет проверять.

superbobr 20.05.2020 в 09:32

Понял, буду в одном комменте. По типу аргумента, так там можно ожидать и int и str, должно сработать в обеих случаях, не знал какой поставить.

ivashkevich 20.05.2020 в 18:34

А, сорян, уже сам забыл задание) Всё в решении отлично

superbobr 19.05.2020 в 21:57
<?php
$line = trim(fgets(STDIN));
$line = explode(' ', $line);
foreach($line as $key => $value){
    if((int)$value % 2 == 0){
        echo $value . ' ';
    }
}
ivashkevich 20.05.2020 в 08:07

Ссылку на решение, пожалуйста, чтобы я видел, что все тесты прошли.

superbobr 20.05.2020 в 09:35
ivashkevich 20.05.2020 в 18:35

Супер!

GeoOK 24.05.2020 в 16:53

1 Задание

<?php

//Цикл foreach
function searchNumber($array, $number) {
    foreach ($array as $arrayNumber) {
        if ($arrayNumber == $number) {
            return $array = true;
        }
    }
    return $array = false;
}

$array = [1, 6, 4, 4=>14, 5];
$number = 5;
$var = searchNumber($array, $number);
if ($var == true) {
    echo 'Есть совпадение!';
}
else echo 'Совпадений нет';

//Цикл for
function searchNumber2($array, $number) {
    for ($i = current($array);$i == true;$i = next($array)) {
        if ($i == $number) {
        return $array = true;
        }
    }
    return $array = false;
}

$array = [1, 6, 4, 4=>14, 5];
$number = 12;
$var = searchNumber2($array, $number);
if ($var == true) {
echo 'Есть совпадение!';
}
else echo 'Совпадений нет';

//Цикл while
 function searchNumber3($array, $number) {
    $i = current($array);
    while ($i == true) {
        if ($i == $number) {
            return $array = true;
        }
        $i = next($array);
    }
    return $array = false;
}

$array = [1, 6, 4, 4=>14, 5];
$number = 7;
$var = searchNumber3($array, $number);
if ($var == true) {
    echo 'Есть совпадение!';
}
else echo 'Совпадений нет';

Все пытаюсь понять какой цикл лучше использовать, поэтому извиняйте за 3 варианта )))
В данном случае цикл foreach более оптимизирован получается, так как сам перебирает массив, правильно я понимаю?

2 Задание

<?php

function entryNumber($array, $number) {
    for ($i = current($array), $x = 0;$i == true;$i = next($array)) {
        if ($i == $number) {
            $x++;
        }
    }
    return $number = $x;
}

$array = [2, 6, 4, 3, 5, 6, 7, 8, 6, 5, 6, 7, 2, 2];
$number = 2;
$var = entryNumber($array,$number);
echo $var > 0 ?  'Число вхождений числа "' . $number . '" = ' . $var : 'Числа "' . $number .  '" нет в массиве';

3 Задание
https://codingzone.io/problems/3/solution/1193

4 Задание
https://codingzone.io/problems/4/solution/1202

ivashkevich 25.05.2020 в 07:43

Где типы аргументов?

Скобка, открывающая тело функции, пишется на новой строке.

            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

В целом ощущение, что все предыдущие уроки вы не проходили а пришли на этот урок с каких-то других курсов типа гикбрейнс. На этом уроке таких ошибок уже быть не должно. Я бы на вашем месте начал с самого первого урока и выполнял все ДЗ, заодно сразу исправляя ошибки по моим комментариям.

GeoOK 25.05.2020 в 17:31

Вроде бы все исправил:

1 Задание

<?php
function searchNumber(array $array, int $number)
{
    foreach ($array as $arrayNumber) {
        if ($arrayNumber == $number) {
            return true;
        }
    }
    return false;
}

$array = [1, 6, 4, 4 => 14, 5];
$number = 5;
if (searchNumber($array, $number) == true) {
    echo 'Есть совпадение!';
} else {
    echo 'Совпадений нет';
}

2 Задание

<?php

function entryNumber(array $array, int $number)
{
    $x = 0;
    foreach ($array as $numbers) {
        if ($numbers == $number) {
            $x++;
        }
    }
    return $x;
}

$array = [2, 6, 4, 3, 5, 6, 7, 8, 6, 5, 6, 7, 2, 2];
$number = 8;
$var = entryNumber($array, $number);

if ($var > 0) {
    echo 'Число вхождений числа "' . $number . '" = ' . $var;
} else {
    echo 'Числа "' . $number . '" нет в массиве';
}

3 Задание
https://codingzone.io/problems/3/solution/1282

4 Задание
https://codingzone.io/ru/problems/4/solution/1281

Гикбрейнс? Улыбнуло )))
На самом деле все проще - по PHP кроме вашего курса, только до этого пробовал читать сразу мануалы с php.net, но понял, что тяжеловато дается, нужно более разжеванней. Но когда начал курс, с каждым уроком не стал вываливать свое дз, а просто сравнивал свое решение с уже другими в комментариях. Хотя зря, как раз на эти ошибки вы бы уже и указали ранее. Виноват - исправлюсь! :-D

ivashkevich 25.05.2020 в 21:36

Отлично, быстро исправили

if (searchNumber($array, $number) == true) {

Вот тут только опять с true сравнение. Функция уже boolean возвращает

GeoOK 26.05.2020 в 07:16

Ааа, все дошло... )))
Спасибо большое за ваши комментарии! Постараюсь учесть все в дальнейшем.

<?php

function searchNumber(array $array, int $number) : bool
{
    foreach ($array as $arrayNumber) {
        if ($arrayNumber == $number) {
            return true;
        }
    }
    return false;
}

$array = [1, 6, 4, 4 => 14, 5];
$number = 5;
echo searchNumber($array, $number) ? 'Есть совпадение!' : 'Совпадений нет';
ivashkevich 26.05.2020 в 10:22

Отлично. Только отвечайте в уже существующую ветку комментариев, а не создавайте новую.

[email protected] 27.05.2020 в 01:45

Первое задание

//находим число 6 в массиве и останавливаемся
$a = [2, 4, 5, 6, 8, 3];
$b = 6;

function found(array $a, int $b)
{
    foreach ($a as $look) {
        if ($b != $look) {
            return 'false';
        } else {
            return true;
            break;
        }
    }
}
echo found($a, $b) ? 'Found' : 'Not found';

Второе задание

//нужно найти сколько раз число 2 входит в массив
$a = [2, 4, 5, 6, 8, 3, 2, 2];
$b = 2;
$mass2 = [];
function howMuch(array $a, int $b)
{
    foreach ($a as $mass1) {
        if ($mass1 == $b) {
            $mass2[] = $b;
        }
    }
    echo count($mass2);
}
echo howMuch($a, $b);

Третье
https://codingzone.io/problems/3/solution/1541

Четвертое
Здесь не добился положительного результата. Вроде как и результат правильный должен быть, но не пропускает система...
https://codingzone.io/problems/4/solution/1542

ivashkevich 27.05.2020 в 18:03
        if ($b != $look) {
            return 'false';
        }

Должно возвращаться булево значение, а не строка.

            return true;
            break;

Зачем break после return?

Блок else не нужен уже, если первый if выполнится, функция завершит работу.

    foreach ($a as $mass1) {
        if ($mass1 == $b) {
            $mass2[] = $b;
        }
    }
    echo count($mass2);

А зачем ещё один массив, вместо того чтобы завести переменную с числом вхождений?

По поводу четвёртого - вы в курсе про кнопку show details?

[email protected] 27.05.2020 в 21:29

Спасибо за помощь!
Первое задание после правок

$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

ivashkevich 28.05.2020 в 05:55
function found(array $a, int $b)
{
    foreach ($a as $look) {

        if ($b == $look) {
            return true;
        }
    }
}

Теперь если ничего не найдено, функция ничего не вернёт. А нужно false.
После foreach лишний перенос строки.

Перечитайте второе задание. Функция должна возвращать значение, а не выводить.

ivashkevich 28.05.2020 в 05:56

В смысле нет инпута? Там число 0 на входе. Значит нужно вывести 0 первых элементов. То есть ни одного. То есть ничего не выводить, если 0 пришел.

[email protected] 02.06.2020 в 15:28
<?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 . ' ';
    }
}
ivashkevich 03.06.2020 в 08:54

Где типы аргументов?

        if ($om === $a) {
            return true;
            return false;

Ну ерунда ведь полная

Перечитайте урок по функциям.

Здесь нужно было написать только 2 функции.

такое мы ещё не проходили, поэтому на форуме php нашёл

А самому подумать? В этом смысл домашки)

[email protected] 03.06.2020 в 11:56

Понял свою ошибку, после функции return функция завершает свою работу, то есть проходит true, и происходит возвращение. В одной функции нельзя же писать 2 раза retutn...
А что если как вариант выставить return 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>';

Если я не в ту сторону мыслю опять, то дайте пожалуйста знать. Хочу уже перестать путаться)

ivashkevich 03.06.2020 в 11:59

Теперь совершенно правильное решение. Только типы опять не указали

[email protected] 03.06.2020 в 16:29

Не совсем понял, где именно типы пропустил указать, подскажите пожалуйста((

ivashkevich 03.06.2020 в 19:08

Типы аргументов у функции. Перечитайте урок по функциям

omeluhin89 23.06.2020 в 10:52
<?php
$arrayNumbers = [2, 5, 7];
$number = 7;
function isNumberFound(array $array, int $number)
{
    $isFound = false;
    foreach ($array as $item) {
        if ($item === $number) {
            $isFound = true;
            break;
        }
    }
    return $isFound;
}

var_dump(isNumberFound($arrayNumbers, $number));

/**************************************************/

$arrayNumbers = [2, 5, 7, 7];
$number = 5;
function numberOccurrences(array $array, int $number)
{
    $occurrences = 0;
    foreach ($array as $item) {
        if ($item === $number) {
            $occurrences++;
        }
    }
    return $occurrences;
}

var_dump(numberOccurrences($arrayNumbers, $number));
ivashkevich 24.06.2020 в 14:25

Где типы аргументов?

omeluhin89 24.06.2020 в 15:08

Добавил типы аргументов

mrKrupin 30.06.2020 в 06:28

Артем, добрый день!
Как такой вариант решения 4 задачи?

<?php
$n = trim(fgets(STDIN));
function fibonachi(int $n)
{
    $fib = [0, 1];
        for ($i = 0; $i < $n - 2; $i++) {
            $fib[] = $fib[$i] + $fib[$i + 1];
        }
    foreach ($fib as $index => $item) {
        if ($index < $n) {
            echo $item . ' ';
        }
        }
}
fibonachi($n);

Помучился знатно, код проверки прошел, но т.к. отличается от варианта решения, хотел бы узнать Ваше мнение)


И еще один вопрос, у меня в браузере ошибки выводятся просто текстом а не цветной таблицей и массивы пишутся в строку. Попытался гуглить, но вразумительного ответа не нашел, может подскажите в какую строну и что смотреть?)

ivashkevich 01.07.2020 в 09:00

Привет. Да отличный вариант. Только проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

Это раскрашивается xdebug-ом https://xdebug.org/docs/display

mrKrupin 01.07.2020 в 10:38

Ctrl+Alt+L постоянно нажимаю, вставил данный код специально в шторм и нажал комбинацию, только добавилась пустая строка перед последней строчкой с функцией. Поэтому и понял, что фигурные скобки у функции переносятся, а у циклов и условий на одной строке.

ivashkevich 01.07.2020 в 19:51

Отступы у for и закрывающей скобки foreach не на своих местах.

UtillitE 30.06.2020 в 12:42

Привет, 1 задание

<?php
$array = [348, 587, 2, 53, 69, 472, 1, 0, 256, 2354, 12, 13, 0, 1, 6, 8, 7, 9];
function searchNumber(array $array, int $number)
{
    foreach ($array as $item) {
        if ($item === $number) {
            return true;
        }
    }
    return false;
}

var_dump(SearchNumber($array, 999));
UtillitE 30.06.2020 в 13:00

Артём, скажи, почему если использовать для вывода ответа var_dump, ответ выводится, а если echo, то выдаёт пустую страницу?

UtillitE 30.06.2020 в 13:30

Задание 2

<?php
$array = [348, 1, 9, 0, 587, 2, 53, 69, 472, 1, 0, 0, 0, 0, 0, 1, 6, 8, 7, 9];
function searchNumber(array $array, int $number)
{
    $x = 0;
    foreach ($array as $item) {
        if ($item == $number) {
            $x++;
        }
    }
    return $x;
}
echo SearchNumber($array, 0);
UtillitE 30.06.2020 в 14:29

Задание с сайта Чётные числа

<?php
$line = trim(fgets(STDIN));
$arr = explode(" ", $line) ;
foreach ($arr as $z){
    if ($z % 2 !== 0){
       continue;
    }   
    echo $z . ' ';

}
ivashkevich 01.07.2020 в 18:16

Отлично. Это необязательно скидывать, если все тесты прошли

ivashkevich 01.07.2020 в 18:16

Имена функций пишутся с маленькой буквы

ivashkevich 01.07.2020 в 18:17

Потому что false при выводе преобразуется в пустую строку

UtillitE 01.07.2020 в 19:04

Понятно, спасибо.

ivashkevich 01.07.2020 в 18:16

Имена функций пишутся с маленькой буквы

UtillitE 01.07.2020 в 20:35

Не могу не похвастаться решением задачи про числа Фибоначи! ;)))))
Я себе весь мозг сломала, прикидывая и так и эдак, как решить задачу. А ларчик просто открывался! :))))

<?php
$line = trim(fgets(STDIN));
$c = -1;
$a = 1;
$array = [ ];
for ($z = $line; $z > 0; $z --){
    $x = $c+ $a;
    $array [ ] = $x;
    $c = $a;
    $a = $x;
}
$input = implode(' ', $array);
echo $input;
ivashkevich 02.07.2020 в 08:07

Всё по логике отлично, но опять проблемы с форматированием кода. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

annferny 11.07.2020 в 19:38
<?php

function isValueFound (array $array, $x) {
    foreach ($array as $i) {
        if ($i === $x) {
            return true;
        }else{
            continue;
        }
    }
    return false;
}

$array = ['mom', 'dad', 'sister', 'brother'];
$x = 'dad';
var_dump(isValueFound($array, $x));
<?php

function countValues (array $array, $x) {
    $i = 0;
    foreach ($array as $item) {
        if ($item === $x) {
            $i++;
        }else{
            continue;
        }
    }
    return $i;
}

$array = ['mom', 'dad', 'dad', 'dad','sister', 'brother'];
$x = 'dad';
echo countValues($array, $x);
ivashkevich 12.07.2020 в 06:16
function isValueFound (array $array, $x) {

Где тип аргумента $x?

$i - не самое подходящее название.

        else{
            continue;
        }

А это для чего?

echo isValueFound($array, $x);

Что выведет, когда значение не найдено?

Со вторым заданием аналогично.

Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

annferny 12.07.2020 в 10:39

Тип аргумента не стала указывать у $x, чтобы функция была применима для разных типов. (хотя изначально указала)

continue использовала, чтобы применить как-то операторы из урока. Потом в примере уже посмотрела, что он там абсолютно не нужен)

Для выведения значений поправила код и взяла в кавычки true и false.

Про отступы учту

ivashkevich 12.07.2020 в 13:32

Зачем в кавычки? Функция должна возвращать булево значение. А в кавычках это уже строки будут)

annferny 12.07.2020 в 16:19

Зато видно, что true или false =D
Убрала кавычки, и сменила echo на var_dump.

ivashkevich 13.07.2020 в 15:19

Теперь отлично) Только else с continue нужно убрать

Nobody 03.08.2020 в 11:32

вопрос по первому заданию. в уроке есть уже готовое решение. взять это решение и сделать функцией или есть др варианты решения этого задания?

ivashkevich 05.08.2020 в 08:07

вполне вариант

Nobody 04.08.2020 в 12:18
<?php

    $array = [95, 26, 137, 70, 15];
    $number = 137;

    function isThereOrNot($array, $number)
    {
        $isNumberFound = false;
        foreach($array as $value) {
            echo 'сравниваем число с элементом ' . $value . '<br/>';
            if($value === $number) {
                $isNumberFound = true;
                break;
            }
        }
        echo $isNumberFound ? "Число $number есть в массиве <br/>" : "Число $number не найдено в массиве <br/>";
    }
    isThereOrNot($array, $number);

    echo '<br/> <hr/> <br/>';

    $arrNums = [1, 2, 3, 4, 1, 5, 6, 7, 8, 1, 9, 0, 1];
    $var  = 1;

    function numRepeat($arrNums, $var)
    {
        foreach($arrNums as $value) {
            if($value === $var) {
                $count++;
            }
        }
        echo 'В массиве $arrNums ' . $count . ' совпадения с переменной $var';
    }
    numRepeat($arrNums, $var);
ivashkevich 05.08.2020 в 08:28

Где типы аргументов?)

Функция по заданию не должна ничего выводить, она должна возвращать.

Nobody 05.08.2020 в 10:03

Пара вопросов.

  1. Про типы аргументов. PHPStorm почему-то их подчеркивает, это ошибка или всё же нормально?
  2. "Функция по заданию не должна ничего выводить, она должна возвращать." - то есть должно быть просто return true или false. Правильно ли Вас я понимаю?
ivashkevich 05.08.2020 в 10:27

В шторме в настройках укажите вместо 5.6 свою реальную версию.

Ну да, рекомендую повторить урок по функциям, раз такие вопросы возникают.

[email protected] 21.08.2020 в 01:30
<?php

function searchInto(array $arr, int $x)
{
    foreach ($arr as $item) {
        if ($item === $x) {
            return true;
        }
    }
    return false;
}

2

<?php
$count = 0;
function searchInto(array $arr, int $x)
{
    foreach ($arr as $item) {
        if ($item === $x) {
            $count++;
        }
    }
}
ivashkevich 23.08.2020 в 09:07

camelCase, no underscores_names

ivashkevich 23.08.2020 в 09:07

Перечитайте условия задач. Функции всегда должны возвращать значение.

[email protected] 23.08.2020 в 10:26

забыл добавить в конце return $count;

<?php
$count = 0;
function searchInto(array $arr, int $x)
{
    foreach ($arr as $item) {
        if ($item === $x) {
            $count++;
        }
    }
    return $count;
}
ivashkevich 27.08.2020 в 08:28

В первой задаче тоже. Функции именуются в camelCase, никаких подчеркиваний быть не должно.

Malfak 06.09.2020 в 18:24
<?php

$array = [1, 4, 5, 6, 5, 8, 5, 10];

$x = 5;

$isNumberFound = false;

function findNumbers ($array , $x) {
    foreach ($array as $item) {
        if($item == $x) {
            $isNumberFound = true;
            return $item;
            break;
        }
    }
}

function enteringNumbers ($array , $x) {
    $count = 0;
    foreach ($array as $item) {
        if ($item == $x) {
            $count++;
        }
    }
    return $count;
}

echo 'Искомое число'. ' '.findNumbers($array , $x);
echo 'Число заходов в массив: ' . enteringNumbers($array, $x);
ivashkevich 07.09.2020 в 12:53

Написанное не соответствует заданию. Кроме того, урок по функциям судя по всему пропустили.

Deny 09.09.2020 в 13:27
//первая задача
function arrayFind(array $array, int $num){
    foreach($array as $item){
        if($num === $item){
            return true;
        } else return false; 
    }

}

$a = [1,2,3,1];
$b = 1;
echo arrayFind($a, $b);
ivashkevich 10.09.2020 в 08:33

Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.

Deny 10.09.2020 в 08:42

Извините,не разобрался,поправил

ivashkevich 10.09.2020 в 08:45

Всегда используйте фигурные скобки для блоков if-else.

Скобка, открывающая тело функции, пишется на новой строке.

И оформление делайте как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

ivashkevich 10.09.2020 в 08:47

Ну и функция работает неправильно. Если сделать

$b = 2;

то вернет false.

Выводить булево значение стоит с помощью var_dump а не echo.

Deny 10.09.2020 в 17:27
//первая задачя
function arrayFind(array $array, int $num)
{
    foreach ($array as $item) {
        if ($item === $num) {
            return true;
        }
    }
    return false;
}

$a = [1, 2, 3, 1];
$b = 4;
var_dump(arrayFind($a, $b));

//вторая задача
function arrayEnter(array $a, int $b)
{
    $i = 0;
    foreach ($a as $item) {
        if ($item === $b) {
            $i++;
        }
    }
    return $i;
}

$a = [1, 2, 3, 1, 1, 1];
$b = 1;
var_dump(arrayEnter($a, $b));
ivashkevich 11.09.2020 в 19:27

Отлично!!!

Sergey503 11.09.2020 в 18:09

1)

$num = 7;
$arrName = [10, 200, 10, 30, 7, 1, 3, 4, 6, 9];

function arrSearch(array $arrName, int $num)
{
    foreach ($arrName as $item) {
        if ($item === $num) {
            return true;
        }
    }
    return false;
}

var_dump(arrSearch($arrName, $num));

2)

$arr = [1, 2, 1, 3, 7, 90, 37, 7, 2, 1, 7];
$number = 7;

function countNum(array $arr, int $number)
{
    $counting = 0;
    foreach ($arr as $item) {
        if ($item === $number){
            $counting++;
        }
    }
    return $counting;
}
var_dump(countNum($arr, $number));
ivashkevich 11.09.2020 в 19:31
            return true;
            break;

Нужен ли здесь break?

Sergey503 13.09.2020 в 13:43

Нет, его там не должно быть, т.к. return true.

Deo 28.10.2020 в 21:07

Моё решение задачи "Чётные числа" почему-то не прошло тест с данными '7 13 99',
а в брузере результат корректен...

<?php
$line = trim(fgets(STDIN));
function even(string $line){
 $nums = explode(' ', $line);
 foreach($nums as $num){
  if( $num % 2 === 0 ){
   $arr[] = $num;
  }
 }
 $str = implode(' ', $arr);
 return $str;
}
echo even($line);
ivashkevich 29.10.2020 в 20:23

Нажмите кнопку "детали", там будет написано что именно пошло не так.

Deo 29.10.2020 в 20:33

Детали
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 тоже пока не известно)

ivashkevich 30.10.2020 в 20:51

Значит у вас в php.ini не включен показ ошибок уровня NOTICE.
Ошибка возникает из-за того что переменная $arr не определена в тот момент, когда она передается в функцию implode

Larisa 31.10.2020 в 11:54
<?php

function isNumberFound(array $array, int $number)
{
    foreach ($array as $item) {
        if ($item === $number) {
            return true;
        }
    }
    return false;
}

$array = [1, 2, 5, 7, 10, 1, 12, 5, 22];
$number = 12;

echo isNumberFound($array, $number) ? 'Результат: Число найдено - ' . $number : 'Результат: Число не найдено';
echo '<br>';

Результат: Число найдено - 12
ivashkevich 31.10.2020 в 16:22

Отлично!

Larisa 31.10.2020 в 12:19
<?php

function countOfInputs($number, $array)
{
    $result = 0;
    foreach ($array as $item) {
        if ($item !== $number) {
            continue;
        } else $result++;
    }
    return $result;
}

$array = [1, 2, 1, 7, 10, 1, 12, 1, 22, 1];
$number = 1;

echo 'Результат: Число ' . $number . ' повторяется ' . countOfInputs($number, $array) . ' раз.';
echo '<br>';

Результат: Число 1 повторяется 5 раз.
ivashkevich 31.10.2020 в 16:23
function countOfInputs($number, $array)

Нужно указать типы аргументов

        } else $result++;

Всегда используйте фигурные скобки для блоков if-else.

Larisa 31.10.2020 в 19:35
<?php

function countOfInputs(int $number, array $array)
{
    $result = 0;
    foreach ($array as $item) {
        if ($item !== $number) {
            continue;
        } else {
            $result++;
        }
    }
    return $result;
}

$array = [1, 2, 1, 7, 10, 1, 12, 1, 22, 1];
$number = 1;

echo 'Результат: Число ' . $number . ' повторяется ' . countOfInputs($number, $array) . ' раз.';
echo '<br>';

Результат: Число 1 повторяется 5 раз.
Larisa 31.10.2020 в 19:35

Поправила

ivashkevich 02.11.2020 в 20:28

Отлично

pixel 06.11.2020 в 14:25
<?php
//Число в массиве
    function searchNumberOfArray($array, $searchNumber): string
    {
        foreach ($array as $value) {
            if ($value === $searchNumber) {
                return 'true';
            }
        }
        return 'false';
    }

//количество нужного числа в массиве
    function countSearchNumberOfArray($array, $searchNumber): int
    {
        $count = 0;
        foreach ($array as $value) {
            if ($value === $searchNumber) {
                $count++;
            }
        }
        return $count;
    }
ivashkevich 06.11.2020 в 16:09

Нужно указать типы аргументов

Первая функция должна возвращать булево значение, а не строку

pixel 06.11.2020 в 16:46

Я вначале возвращал просто true/false, просто при выводе показывало 1 либо 0, для удобства сделал чтобы строкой выводило true/false.

ivashkevich 07.11.2020 в 05:53

Используйте в таком случае для отладки var_dump вместо echo

pixel 06.11.2020 в 14:26
<?php 
$array = [3, 4, 6, 77, 85, 4, 1, 5];
    $searchNumber = 4;
    echo searchNumberOfArray($array, $searchNumber);
    echo '<br>Количество чисел = ' . $searchNumber . ' в массиве, равно ' . countSearchNumberOfArray($array, $searchNumber);

    echo '<br>Четных чисел в массиве: ';
    $array = [1, 2, 3, 4, 5, 6, 7, 8, 9];

    function evenArray($array){
        $evenArray = [];
        foreach ($array as $value){
            if ($value % 2 !== 0){
                continue;
            }
            $evenArray[] = $value;
        }
        return $evenArray;
    }

    foreach (evenArray($array) as $value){
        echo $value . ' ';
    }
ivashkevich 06.11.2020 в 16:10

Тут всё ок, кроме отступов. Ну и тип аргумента не указан

pixel 06.11.2020 в 16:48

тип аргумента вот тут?

function evenArray($array) : array
ivashkevich 07.11.2020 в 05:54
function evenArray(array $array)

Аргумент - то что в скобках

pixel 07.11.2020 в 06:40

Спасибо

pixel 06.11.2020 в 16:41
<?php
//Фибоначчи
$line = trim(fgets(STDIN));
function fibrinToNumber($number): array
    {
        if ($number == 0) {
            return [];
        } elseif ($number == 1) {
            return [0];
        } else {
            $fibrinArray = [0, 1];
            for ($i = 2; $i < $number; $i++) {
                $fibrinArray[] = $fibrinArray[$i - 2] + $fibrinArray[$i - 1];
            }
            return $fibrinArray;
        }
    }

    $numberToFibrinArray = $line;
    foreach (fibrinToNumber($numberToFibrinArray) as $item) {
        echo $item . ' ';
    }
ivashkevich 08.11.2020 в 14:56

Не забывайте про типы аргументов.

pixel 08.11.2020 в 16:27

Принято, спасибо)

zick 04.12.2020 в 16:55

Фибоначчи, это просто взрыв мозга.

ivashkevich 06.12.2020 в 07:27

Получилось?

zick 06.12.2020 в 17:48

К сожалению пришлось посмотреть ответ, когда его увидел вроде ничего сложного нет, но повторить через 10 минут не смог. Парадокс!!!

ivashkevich 06.12.2020 в 18:00

Ознакомьтесь с решениями в комментариях. Возможно более понятный вариант найдется

Alex-neo 19.12.2020 в 01:10

###Число в массиве?

<?php

function alibaba(array $M, int $n)
{
    foreach ($M as $i) { 
        if ($i == $n) { 
         $chisloVMassive = true;
        break ;
         } 
     } 
 echo $chisloVMassive ? 'Число в массиве' : 'Число не найдено';
}

$M = [5, 6, 1, 78, 3];
$n = 78;

echo alibaba ($M, $n);
ivashkevich 21.12.2020 в 06:36

Функция по заданию не должна ничего выводить, она должна возвращать.
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

Alex-neo 19.12.2020 в 23:09

##Кол-во вхождений

<?php

function amazon(array $M, int $n)
{
$kolVhojdeniy=0;

    foreach ($M as $i) { 
        if ($i == $n) { 
          $kolVhojdeniy += 1;
         } 
     } 
 echo  'Количество вхождений: ' . $kolVhojdeniy;
}

$M = [5, 1, 6, 1, 78, 3,1,5,1];
$n = 1;

echo amazon ($M, $n);
ivashkevich 21.12.2020 в 06:42

Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Функция по заданию не должна ничего выводить, она должна возвращать.

zarin 15.01.2021 в 17:46
/*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я задача прошла проверку на сайте. С фибоначчи не смог решить. Посмотрел решение.

ivashkevich 15.01.2021 в 19:29
$arrayOfNumbers1 = [1, 0, 24, 55, 4, 5, 7, 19, 98, -1, 4]; //создали пустой массив

вовсе не пустой

$isNumberFound = false; //переменная с флагом присутствия числа в массиве

для чего это?

ifNumberFoundInArray должно начинаться с is... а не if...

            return 'true';

Функция должна возвращать булево значение а не строку

ifNumberFoundInArrayAndHowManyTimes - неподходящее название. Функция должна вернуть только число вхождений, дополнительно она не возвращает найдены числа или нет.

FindEvenNumbers - имена функций пишутся с маленькой буквы

zarin 16.01.2021 в 07:47

Спасибо за замечания. Поправил.
По поводу 1ой задачи изначально у меня было тоже просто return true/false, но echo отображал в браузере 1 (для true) и ничего (для false). Я проверил var_dump и возвращалось нормально булево значение, но я подумал что нужно чтобы в браузере писалось true/false. Поэтому написал строку. Не внимательно задачу прочитал.

ivashkevich 17.01.2021 в 12:23
function findEvenNumbers($array)

не указан тип аргумента

{

    foreach ($array as $arrayNumber) {

тут лишний перенос

        if ($arrayNumber !== $requiredNumber) {
            continue;
        } else {
            $numberOfEntries++;
        }

можно упростить до

        if ($arrayNumber !== $requiredNumber) {
            continue;
        }
        $numberOfEntries++;

во втором задании анологично.

Но это уже так, небольшие улучшения. В целом всё хорошо.

Egor.Ka 08.02.2021 в 18:55

Вроде работает

<?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 );
ivashkevich 09.02.2021 в 06:51

Отлично

Vladimir96 08.02.2021 в 19:40
//есть ли число
function valueIsHere(array $arr, $num): bool
{
    foreach ($arr as $value) {
        if ($value === $num) {
            return true;
        }
    }

    return false;
}

//число вхождений
function numberOfCurrencies(array $arr, int $num) : int
{
    $count = 0;
    foreach ($arr as $index) {
        if ($index !== $num){
            continue;
        }
        if ($index === $num) {
            $count++;
        }
    }

    return $count;
}
ivashkevich 09.02.2021 в 06:54
    foreach ($arr as $index) {
        if ($index !== $num){
            continue;
        }
        if ($index === $num) {
            $count++;
        }
    }

Это не индекс, это значение. Название должно соответствовать действительности.

Непонятно для чего 2 взаимоисключающих условия, нужно оставить одно:

function numberOfCurrencies(array $arr, int $num) : int
{
    $count = 0;
    foreach ($arr as $index) {
        if ($index === $num) {
            $count++;
        }
    }

    return $count;
}
serega19860511 20.04.2021 в 20:50
$array = [2, 34, 5, 7, 90, 1, 5];
$numbers = 5;
function getBooleanValue(array $arr, int $number): bool
{
    $isNumbers = false;
    foreach ($arr as $item)
        if ($item === $number) {
            $isNumbers = true;
            break;
        }
    return $isNumbers;
}

echo getBooleanValue($array, $numbers);

echo '<br>';

$array = [2, 34, 5, 7, 90, 1, 5, 5, 2, 5];
$numbers = 2;
function getIntegerValue(array $arr, int $number): int
{
    $count = 0;
    foreach ($arr as $item)
        if ($item === $number) {
            $count++;
        }
    return $count;
}

echo getIntegerValue($array, $numbers);

Надеюсь что в этот раз всё правильно

ivashkevich 27.04.2021 в 20:36

Имена функций ни о чем не говорят. Блоки foreach всегда нужно оформлять внутри фигурных скобок

Логические задачи с собеседований