Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 19.05.2014
Сообщений: 11
1

Выражение в качестве параметра функции

19.05.2014, 22:52. Показов 934. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть массив данный $array[].
При проходе по массиву через

PHP
1
2
3
for ($x=1; $x<=$bars; $x++)
 
{}
Обращаюсь к $array[$x]["Foo"]. Всё корректно работает.

Необходимо использовать функции для расчётов и в качестве параметра передать выражение
$array[$x]["Foo"] - $array[$x]["Foo2"], чтобы функции было доступно $x для отображения предыдущих значений в массиве.

Вот функция

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 function foo ($data,$period)
 
 {
     
     for ($y=1; $y<=$period; $y++)
     
     {
      global $array;
          global $x;
      $z= $x-$y+1;  
      $result = $result + $data;
      
     }
    
     return $result;
 }
Теперь о проблеме:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 function foo ($data,$period)
 
 {
     
     for ($y=1; $y<=$period; $y++)
     
     {
      global $array;
          global $x;
      $z= $x-$y+1;  
      $result = $result + $array[$x]["Foo"] - $array[$x]["Foo2"];
      
     }
    
     return $result;
 }
Здесь всё работает корректно ибо цикл внутри функции перебирает как надо, но вот как мне выражение извне функции передать в качестве параметра в виде выражения $array[$x]["Foo"] - $array[$x]["Foo2"], а не результатов вычисления.
Поскольку в первом примере, результаты неправильные. То есть чтобы при обращении в коде к функции foo ($array[$x]["Foo"] - $array[$x]["Foo2"], $period) все работало корректно

Буду признателен за хелп)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2014, 22:52
Ответы с готовыми решениями:

передать амперсанд в качестве параметра в адресной строке
Здравствуйте. Есть название игры &quot;Blade&amp;Soul&quot;, как я могу передать этот текст GET-параметром? Т.е....

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

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

Преобразовать массив в строку для дальнейшего использования в качестве параметра
Есть параметр, который принимает числовые значения через запятую. Выглядит он так: 'post_category'...

6
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
20.05.2014, 06:59 2
Цитата Сообщение от taspol Посмотреть сообщение
в виде выражения $array[$x]["Foo"] - $array[$x]["Foo2"], а не результатов вычисления.
А как? Как значения этих элементов массива разделенные дефисом, в виде текста? тогда "$array[$x]['Foo'] - $array[$x]['Foo2']". Если это и есть сам текст то '$array[$x]["Foo"] - $array[$x]["Foo2"]'. Если нужно передать 2 этих переменных, то function foo ($array[$x]["Foo"], $array[$x]["Foo2"], $period).

Если честно вообще непонятно смысл всего этого и что у Вас не получается... И кстати
PHP
1
2
3
for ($x=1; $x<=$bars; $x++)
 
{}
Тут точно индексы с 1 начинаются а не с нуля? Если с нуля (как обычно), то нужно так
PHP
1
2
3
for ($x=0; $x<$bars; $x++)
 
{}
Ну а вообще в php есть же foreach, с ним намного проще перебирать массивы...
0
0 / 0 / 0
Регистрация: 19.05.2014
Сообщений: 11
20.05.2014, 08:26  [ТС] 3
Суть в том, что функция должна принимать параметр в виде выражения.
А потом работать с этим выражением внутри функции.
Выражение может быть любым, то есть $array[$x]['Foo'] - $array[$x]['Foo2'] или
($array[$x]['Foo'] - $array[$x]['Foo2'] + $array[$x]['Foo3']) * $array[$x]['Foo2']
Заранее никогда не известно.
Вопрос в следующем: можно ли как-то передать всё это выражение в виде параметра, может быть, как-то его собрать, например, через Implode, а потом внутри функции развернуть, чтобы функция могла внутри через цикл обратиться к $array[$x]['Foo'], $array[$x-1]['Foo'], $array[$x-2]['Foo'] и тд.

2. Какая разница с какого числа начинать $x в переборе, это не суть важно.
3. Вопрос не в способе перебора данных массива, а в передаче выражения в качестве параметра с тем, чтобы с этим выражением можно было работать функции.

Добавлено через 30 минут
Перефразирую вопрос:
1. Как функции передать не значение выражения в качестве параметра, а именно само выражение.
В случае, если $data = $array[$x]['Foo']; То функции будет передано какое значение из массива, а необходимо передать самое выражение в виде $array[$x]['Foo']
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
20.05.2014, 20:18 4
Цитата Сообщение от taspol Посмотреть сообщение
Перефразирую вопрос:
1. Как функции передать не значение выражения в качестве параметра, а именно само выражение.
В случае, если $data = $array[$x]['Foo']; То функции будет передано какое значение из массива, а необходимо передать самое выражение в виде $array[$x]['Foo']
Ну так и пишите
PHP
1
$data = '$array[$x][\'Foo\'] - $array[$x][\'Foo2\']';
0
0 / 0 / 0
Регистрация: 19.05.2014
Сообщений: 11
20.05.2014, 20:42  [ТС] 5
Цитата Сообщение от pav1uxa Посмотреть сообщение
1
$data = '$array[$x][\'Foo\'] - $array[$x][\'Foo2\']';
Выводит $array[$x][\'Foo\'] - $array[$x][\'Foo2\'], а не результат вычисления.
После передачи в функцию, выражению должно просчитать выражение.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
20.05.2014, 20:44 6
Цитата Сообщение от taspol Посмотреть сообщение
Выводит $array[$x][\'Foo\'] - $array[$x][\'Foo2\'], а не результат вычисления.
Так Вам ведь и надо было это получить? Вы же перед этим написали, что результат вычисления Вам не нужно передавать?
0
0 / 0 / 0
Регистрация: 19.05.2014
Сообщений: 11
20.05.2014, 21:34  [ТС] 7
Мне в функцию необходимо передать выражение, которое внутри функции будет подсчитано.
0
20.05.2014, 21:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2014, 21:34
Помогаю со студенческими работами здесь

Зачем в качестве параметра передавать null и потом использовать его как массив?
Я встретил такой код и он УБИЛ МЕНЯ НАПОВАЛ(: public static function getCellsWeight($kpW,...

Нужен веб-скрипт, которому в качестве параметра передаётся длинная текстовая строка.
Хелп, плз! Нужен веб-скрипт, которому в качестве параметра передаётся длинная текстовая строка. ...

Передача функции в качестве аргумента
Передаю в функцию (А) в качестве аргумента другую функцию (Б). В функцию Б передаю переменную из А,...

Значение параметра функции по умолчанию
Здравствуйте, форумчане! Уверен, что вопрос простой, но разъясните пожалуйста, как правильно...


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

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