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


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

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

sofi.tatarinowa@yandex.ru 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 =)

ArtemijeKA 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

Норм

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

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

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

tmv.nika@mail.ru 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 - функция завершает свое выполнение.
В остальном всё хорошо =)

demyanovpaul@yandex.ru 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);
red.shuhov48@gmail.com 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. Все отлично!
volodia.pavloff201343@gmail.com 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

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

volodia.pavloff201343@gmail.com 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
babls2332@gmail.com 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@yandex.ru 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 после вызова не имеет смысла - функция ничего не вернет, а значит и выводить нечего.
ilshatgb@mail.ru 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

Отлично

pavliggs@mail.ru 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 говорит о том, что в переменной лежит число. На деле же там массив.
    Кроме того, вместо того чтобы помещать одно и то же число в массив а затем считать число элементов в нем, лучше просто завести переменную со счетчиком вхождений.
pavliggs@mail.ru 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.

che4151999@gmail.com 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 при вызове функции тоже не нужно, просто через запятую указываешь число)

krollik1000000@gmail.com 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-ом
romaartemov1999@gmail.com 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

Отлично

prinzplanloser0514@gmail.com 17.09.2019 в 11:32

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

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

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

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

zuxarevaalina88@gmail.com 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 во втором решении? Без него не перейдет к следующей итерации?

zuxarevaalina88@gmail.com 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;
}
anton-gogo@mail.ru 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

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

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

anton-gogo@mail.ru 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); - что за круглые скобки? Для чего?
anton-gogo@mail.ru 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... используются для булевых значений.

Omigod@live.ru 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, тоже непонятно. В программировании нужно всё упрощать, а не усложнять.

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

Omigod@live.ru 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));
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));
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 . '.';
}
Логические задачи с собеседований