Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
1

Передача функции в качетве параметра массив

12.06.2013, 16:33. Показов 661. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создал функцию, в которую передаю кучу параметров, есть и массив, но при использовани передоваемого массива возникает Notice: Undefined offset, подскажите как быть.
Вот код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
for($c=1; $c<=$indexFilm; $c++)
    {
        for($a=$indexEndCost[$c]+3; $a<=$indexEndTime[$c]; $a++)
        {
            for($b=3; $b<=14; $b++)
            {
                if (!empty($data->sheets[0]['cells'][$a][$b]))
                {   
                    $seansDateTime++;
                    $seansCostName[$c][$seansDateTime]=$data->sheets[0]['cells'][$a][$b];
                    $date[$c][$seansDateTime]=$data->sheets[0]['cells'][$indexEndCost[$c]+2][$b];
                    $time[$c][$seansDateTime]=$data->sheets[0]['cells'][$a][2];
                    echo " ".findCost($indexFilm,$indexStartFilm,$indexEndCost,$data,$seansCostName,$seansDateTime,$c);                 
                }
            }
        }
    }
 
function findCost($indexFilm,$indexStartFilm,$indexEndCost,$data,$seansCostName,$seansDateTime,$c)
{
$costIndex=0;
$seansCost=0;
 
    for($b=1; $b<=$indexFilm; $b++)
    {
        for($e=$indexStartFilm[$b]+2; $e<=$indexEndCost[$b]; $e++)
        {
            $costIndex++;
            $str=strstr($data->sheets[0]['cells'][$e][2],"(");
            $str2=strpos($str,")")-1;
            $costType[$b][$costIndex]=substr($str,1,$str2);
            $cost[$b][$costIndex]="";
 
            for($d=4; $d<=13; $d++)
            {
                if (!empty($data->sheets[0]['cells'][$e][$d]))
                {               
                    $cost[$b][$costIndex].=$data->sheets[0]['cells'][$e][$d].";";
                }
                else
                echo "";
            }
            $length=strlen($cost[$b][$costIndex]);
            $cost[$b][$costIndex]=substr($cost[$b][$costIndex],0,$length-1);
        }   
    }
 
    for($f=1; $f<=10; $f++)
    {
        if ($seansCostName[$c][$seansDateTime]==$costType[$c][$f])/// Здесь смотреть
        {
            $seansCost=$cost[$c][$f];
        }
    }
 
    return $seansCost;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2013, 16:33
Ответы с готовыми решениями:

Передача параметра по ссылке <a></a>
Добрый день! На моей страничке есть запрос, который формирует таблицу, в которой каждая строка -...

Передача параметра в array_filter
Объясните, почему если нужно произвести фильтрацию массива по значению из переменной этот код...

Передача параметра с формы
Файл param.php. Вопрос: Почему выдает ошибку &quot;Notice: Undefined variable: username in...

Передача GET параметра сессии
Здравствуйте. Как сделать так чтобы если допустим нажал на любую ссылку через GET бы передовался...

4
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
12.06.2013, 16:47 2
Цитата Сообщение от Noit Посмотреть сообщение
$costType[$c]
у вас нет элемента массива с таким индексом.. вы же не проверяете $c.. это может быть что угодно, а что угодно вам даст нотис..
0
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
12.06.2013, 17:05  [ТС] 3
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
у вас нет элемента массива с таким индексом.. вы же не проверяете $c.. это может быть что угодно, а что угодно вам даст нотис..
у меня $c имеет тот же диапазон, что и $b, поэтому дело не в этом, даже если подставить вместо $c цифру соответствующую диапазону, в котором есть $b, то нотис будет выдавать то же
PHP
1
2
3
4
5
6
7
for($f=1; $f<=10; $f++)
    {
        if ($seansCostName[4][$seansDateTime]==$costType[4][$f])
        {
            $seansCost=$cost[4][$f];
        }
    }
0
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
12.06.2013, 17:37 4
чудес не бывает и нотисы просто так не появляются $seansCostName[$c][$seansDateTime]==$costType[$c][$f] либо $c, либо $f, либо $seansDateTime не входит в диапазон массива...
0
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
13.06.2013, 13:28  [ТС] 5
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
чудес не бывает и нотисы просто так не появляются $seansCostName[$c][$seansDateTime]==$costType[$c][$f] либо $c, либо $f, либо $seansDateTime не входит в диапазон массива...
дело в том что до функции использовал $seansCostName[$c][$seansDateTime] и все было ок-значит здесь индексы($c, $seansDateTime) в норме, эти же индексы я передаю в функцию
PHP
1
findCost($indexFilm,$indexStartFilm,$indexEndCost,$data,$seansCostName,$seansDateTime,$c);
дальше, в $costType[$c][$f], индекс $f входит в диапазон индекса $costIndex, а $c в диапазон индекса $b (до этого использовал $costType[$b][$costIndex] и все было ок), тоесть где может быть проблема?

Добавлено через 1 час 7 минут
Вот так работает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function findCost($indexFilm,$indexStartFilm,$indexEndCost,$data,$seansCostName,$seansDateTime,$c)
{
$costIndex=0;
$seansCost=0;
 
//Find Cost type by seans
//@param $b - index film
    for($b=1; $b<=$indexFilm; $b++)
    {
        for($e=$indexStartFilm[$b]+2; $e<=$indexEndCost[$b]; $e++)
        {
            $costIndex++;
            $str=strstr($data->sheets[0]['cells'][$e][2],"(");
            $str2=strpos($str,")")-1;
            $costType[$b][$costIndex]=substr($str,1,$str2);
            $cost[$b][$costIndex]="";
 
            for($d=4; $d<=13; $d++)
            {
                if (!empty($data->sheets[0]['cells'][$e][$d]))
                {               
                    $cost[$b][$costIndex].=$data->sheets[0]['cells'][$e][$d].";";
                }
                else
                echo "";
            }
            $length=strlen($cost[$b][$costIndex]);//length all cost
            $cost[$b][$costIndex]=substr($cost[$b][$costIndex],0,$length-1);//all cost
 
            if (($c==$b) & ($seansCostName[$c][$seansDateTime]==$costType[$b][$costIndex]))
            {
                $seansCost=$cost[$b][$costIndex];
            }
        }   
    }
 
    /*for($f=1; $f<=$costIndex; $f++)
    {
        if ($seansCostName[$c][$seansDateTime]==$costType[$c][$f])
        {
            $seansCost=$cost[$c][$f];
        }
    }*/
 
    return $seansCost;
}
0
13.06.2013, 13:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2013, 13:28
Помогаю со студенческими работами здесь

Передача указателя на массив в качестве параметра функции в QML
Доброго времени суток. Имеется следующая система - в Qml приложении есть два элемента: Text{} и...

Передача параметра функции
Подскажите пожалуйста каким образом передавать уже явные параметры CreateRectRgn в параметры BitBlt...

Передача параметра из функции
Коллеги, добрый день. Добавил в функцию дополнительный параметр BigP. Но почему-то после вызова...

Передача функции в качестве параметра
Все привет. Помогите в решении следующей проблемы: есть класс XXX, один из методов которого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru