Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Noit
26 / 26 / 10
Регистрация: 11.04.2012
Сообщений: 870
1

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

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

Создал функцию, в которую передаю кучу параметров, есть и массив, но при использовани передоваемого массива возникает 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 16:33
Ответы с готовыми решениями:

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

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

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

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

Передача через форму нескольких значений одного параметра POST
&lt;?php for ($i=0; $i&lt;count($a); $i++) { ?&gt; &lt;input name=&quot;category-type&quot;...

4
AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
12.06.2013, 16:47 2
Цитата Сообщение от Noit Посмотреть сообщение
$costType[$c]
у вас нет элемента массива с таким индексом.. вы же не проверяете $c.. это может быть что угодно, а что угодно вам даст нотис..
0
Noit
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
AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
12.06.2013, 17:37 4
чудес не бывает и нотисы просто так не появляются $seansCostName[$c][$seansDateTime]==$costType[$c][$f] либо $c, либо $f, либо $seansDateTime не входит в диапазон массива...
0
Noit
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 13:28

Передача параметра в ссылке без знака "?"
Здравствуйте! Обычно передача параметра в ссылке выглядит так:...

Выражение в качестве параметра функции
Есть массив данный $array. При проходе по массиву через for ($x=1;...

Можно ли передать массив в качестве параметра в строке URL?
подскажите по сабжу.. заранее благодарен


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru