Чат Telegram
Группа ВКонтакте
Новый комментарий


SBTesla
<?php
function hasInArray(array $array , int $num )
{
    foreach ($array as $item) {
        if ($item === $num) {
           return true;
        }
    }

    return false;
}
ivashkevich

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

ivashkevich

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

Dasgonder
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

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

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

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

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

Dasgonder
//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

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

Andreo
<?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

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

По второй:

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

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

1nSide

Так что-ли?

$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

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

function searchNumbersInArray(array $arr, int $num)

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

function x()
{
    ...
}
1nSide

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

$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

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

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

echo searchNumbersInArray($arr, 1);
1nSide

Так что-ли?

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

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

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

echo searchNumbersInArray($arr);
ivashkevich

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

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

echo searchNumbersInArray($arr, 1);
SlipKnot

Домашка №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
  1. $isFind = false; - должно быть внутри функции.
  2. во второй функции в самом начале стоит определить $count = 0.
  3. для if и else всегда используйте фигурные скобки.
  4. прочитайте домашку ещё раз - функции не должны ничего выводить (никаких echo быть не должно), они должны что-то возвращать (должны быть return). Первая из них должна вернуть true или false, тут сразу можно указать тип возвращаемого значения bool. Вторая функция должна вернуть целое число, тут можно указать тип возвращаемого значения int.
  5. аргументы функций должны иметь тип int и array - это стоит явно указать перед аргументами.
  6. сами алгоритмы правильные, это хорошо, но стоит поработать над замечаниями.
dom1r
<?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

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

Fox-24

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

<?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

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

Fox-24

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

sofi.tatarinowa@yandex.ru

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
  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 =)

ArtemijeKA

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
  1. Функция должна возвращать булево значение
  2. Функция должна возвращать число

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

Waldemar

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

ivashkevich

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

Benya
<?php

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

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

Benya
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

не работает

Art
//Вариант с многомерным массивом и рекурсией
$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

Норм

tmv.nika@mail.ru
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

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

tmv.nika@mail.ru

( ! ) 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

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

tmv.nika@mail.ru
<?php

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

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

lordbear53@gmail.com
<?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

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

lordbear53@gmail.com
<?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

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

demyanovpaul@yandex.ru

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

Всё супер!

virtual2018
<?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

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

Mike

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


<?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
  1. После return уже ничего не выполнится, break не имеет смысла.
  2. Отформатируйте отступы, невозможно читать. Функция должна возвращать, а не выводить. Для чего continue, если итерация уже завершилась?
Bogdan

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

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

Bogdan

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

ivashkevich

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

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

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

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

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

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

$x = 4 > 2 ? 1 : 0;

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

XXX
<?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
  1. Переменная $isNumberFound всегда false до вот этого момента:
    if($isNumberFound = true){

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

  2. Переменная $isNumberFound не нужна
SashkoUkraine
<?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
  1. Если число не найдено, должно возвращаться false. Для чего переменная $numberExist?
  2. Можно проще - увеличивать счётчик, не расходуя память на ещё один массив.

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

Bugaga159
<?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
  1. Неподходящие имена переменных. item - один элемент, а у вас так называется массив, то есть множество элементов. $list - список, у вас - это единственный элемент. Ерунда выходит)
  2. То же самое.

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

Bugaga159

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

Bugaga159
<?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);
red.shuhov48@gmail.com
/*   $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

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

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

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

  1. Функция должна вернуть одно булево значение, а не выводить строки для каждого числа.
  2. Функция должна вернуть число, а не вывести его.
Pro100Bah
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
  1. Внутри цикла можно не присваивать false, так как оно всегда false, до тех пор пока не перейдет в true. Ну а там уже и цикл завершится.
  2. Все отлично!
volodia.pavloff201343@gmail.com
//задаем переменные
$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

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

volodia.pavloff201343@gmail.com
//задаем переменные
$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

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

ashfedor
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
  1. Где типы аргументов?
  2. Первая функция должна возвращать булево значение
  3. Вторая функция должна возвращать int
babls2332@gmail.com
<?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

Отлично!

Blook
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

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

shtiher@yandex.ru

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

<?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

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

Grewi
// Присутствие значения в массиве
$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
  1. Если начать искать число 5, то выдаст false, хотя в массиве это число есть. Правильно пишется nUmber.
  2. Функция должна возвращать число вхождений, а не выводить его. Второй echo после вызова не имеет смысла - функция ничего не вернет, а значит и выводить нечего.
ilshatgb@mail.ru

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

<?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

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

lilit

Первое:

<?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
  1. Должен быть указан тип аргументов. Функция должна возвращать булево значение, а не строку.
  2. Должен быть указан тип аргументов.
lilit

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

Первое:

<?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

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

lilit

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

XXX
<?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
  1. ОК
  2. На конструкции return функция завершает свою работу. После него break не имеет смысла - этот участок кода никогда не выполнится. Присваивание в переменную перед тем как вернуть значение тоже не имеет никакого смысла.
Boodoo

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

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

Boodoo

Понял, ок.

Boodoo

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

Отлично

pavliggs@mail.ru

Задание 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
  1. Почему $isNumberFound = false; за пределами функции? В случае, когда оно false, в выражении
    return $isNumberFound ? 'Число "' . $y .'" найдено!' : 'Число "' . $y .'" не найдено!';

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

  2. numberOfRepetitions - неподходящее название. number говорит о том, что в переменной лежит число. На деле же там массив.
    Кроме того, вместо того чтобы помещать одно и то же число в массив а затем считать число элементов в нем, лучше просто завести переменную со счетчиком вхождений.
pavliggs@mail.ru

Спасибо за поправки!
Тогда с учетом замечаний получается так.
Задание 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

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

artemship
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

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

che4151999@gmail.com
<?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
  1. Назвать лучше countInArray
  2. average не подходит по смыслу. Лучше count
  3. Число вхождений не должно передаваться извне, оно должно быть инициализировано в начале функции как равное нулю.
Dram

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

<?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

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

Dram

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

<?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

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

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

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

Dram

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

ivashkevich

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

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

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

Dram

вторая:

<?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

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

Dram
<?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

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

krollik1000000@gmail.com
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
  1. foreach, а не forEach. У аргументов должны быть указаны типы. Функция должна возвращать булево значение, а не выводить что-то через var_dump
  2. foreach, а не forEach. У аргументов должны быть указаны типы. Функция должна возвращать значение типа int, а не выводить что-то через echo
  3. continue здесь не нужен
Moskva

Код:

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
  1. Укажите типы аргументов. Слишком сложно с помощью for. К тому же на каждой итерации будет выполняться проверка условия и каждый раз будет вызываться count(). Решение - вынести число элементов в массиве в отдельную переменную до цикла. Тогда count вызовется только один раз, а дальше будет использоваться уже готовое значение из переменной. Ну а вообще тут конечно просто foreach нужно использовать.
  2. Укажите типы аргументов. Та же история с count. Функция должна возвращать число, а не строку. Ну и foreach тут тоже самое простое решение.
Moskva
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
  1. Где типы аргументов?
    $arrays - неподходящее название для элемента массива.
  2. Не указаны типы аргументов. Решение ок.
bratko

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
  1. Нужны типы аргументов
  2. По заданию функция должна возвращать значение. Про вывод сообщений ничего не было.
bratko

так?

$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

Супер!

esqrx
<?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

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

Это что такое

else { $i = false;}

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

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

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

esqrx
<?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
echo 'Сравниваю число ' . $item . '<br>';

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

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

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

return $thisNumber ? true : false;

??? Просто:

return $thisNumber;

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

esqrx

спасибо, думал на счет 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

Отлично!

ivashkevich

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

esqrx
/// 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

Отлично!

Bizzzon
<?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

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

Reechniy
раз:

<?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

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

kvakazuabr
$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

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

AlexxxEy
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

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

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

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

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

Aleks

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

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

Aleks

Поправил

ivashkevich

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

Aleks

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

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

Vladimir96
//Домашнее задание
$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

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

Vladimir96

Поправил)

ivashkevich

Теперь ок

Lasto

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

$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
  1. Не указаны типы аргументов
  2. Found, а не Faund
  3. return $isNumberFaund = true; - не имеет смысла присваивать переменной значение, оно не используется больше нигде. Правильно или написать $isNumberFaund = true; и затем в конце функции сделать return. Либо сразу писать return true, но тогда потеряется изучаемый в этом уроке оператор break.
  4. Если число не найдено, функция должна вернуть false. У вас она не возвращает ничего (результат - null). Можете проверить var_dump-ом
romaartemov1999@gmail.com
<?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

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

Ooleg
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

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

Ooleg

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

ivashkevich

Отлично

Dreft

Задание 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
  1. Если число не первое в массиве, то сразу вернётся false.
  2. Что за функция в функции?
Dreft

Поправил.

XXX
<?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
  1. После return break не нужен. На return функция завершает свою работу.
  2. Отлично.
Clawson
<?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

Отлично

prinzplanloser0514@gmail.com

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

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

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

prinzplanloser0514@gmail.com

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

ivashkevich

Отлично

dliashchenko
<?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

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

H3licoptero
  Задание №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

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

Онлайн-курсы PHP и MySQL
Обучение с полного нуля до уровня джуниора!
Начать бесплатно
Логические задачи с собеседований