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

Массивы и функции замыкания

15.06.2012, 23:28. Показов 1237. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток! Есть такая задачка, имеется массив:

PHP
1
2
$arr["a{$N}"] = "Hello, world, I am {$N}";
//$N - это порядковый номер изменяющийся от 0 - 99;
из этого массива необходимо получить новый массив, (в этом новом массиве должно быть все что содержится в первом) используя для этого функции замыкания. Подскажите как возможно реализовать данную задачу.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.06.2012, 23:28
Ответы с готовыми решениями:

Замыкания, и замыкания в объекте. Где данные?
Помогите пожалуйста разобраться где хранятся данные. Ниже 2 примера. В первом все вроде как понятно - Есть переменная counter которая...

Замыкания, сокрытие переменных в функции
Добрый день. Вот код ниже: "use strict"; var MyLibrary = (function() { var a = 5; var b = 10; return { getSumm:...

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил "Запрещено создавать темы с множеством...

6
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
16.06.2012, 01:57
так что-ле
PHP
1
2
3
4
5
6
7
8
9
10
11
12
function loop($n)
{
   static $i = 0;
   $i++;
   // Объявляем новый массив
   $new_array = array();
   $arr["a{$i}"] = "Hello, world, I am {$i}";
   // Сохраняем в новый массив
   $new_array[$i] = $arr["a{$i}"];
   // Зацикливаем, пока не достигнем $n
   if ($i < $n) loop($n);
}
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
16.06.2012, 06:15
Цитата Сообщение от katran7 Посмотреть сообщение
в этом новом массиве должно быть все что содержится в первом
PHP
1
$new = $arr;
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
16.06.2012, 09:36
Цитата Сообщение от katran7 Посмотреть сообщение
используя для этого функции замыкания.
у меня не замыкание в прямом смысле
Цитата Сообщение от Vovan-VE Посмотреть сообщение
$new = $arr;
Vovan-VE, и где тут замыкание?

Может так надо
PHP
1
2
3
4
$fnArray = function($new, $arr)
{
   return $new[] = $arr;
}
тока это на тупость похоже. не понимаю зачем нужно замыкание для присваивания одной переменной/массива другой(му)
0
1 / 1 / 0
Регистрация: 11.11.2010
Сообщений: 34
17.06.2012, 00:22  [ТС]
Спасибо!

А подскажите пожауйста вот еще такую штуку.
есть такой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
for ($N = 0;$N<100;$N++)
{
    $arr["a{$N}"] = "Hello, world, I am {$N}.";
}
    print_r($arr);
    $x = function ($I) use ($arr)
{
   for ($Z=0;$Z<100; $Z++)
   {
     $arr2["B{$Z}"] = $arr["a{$Z}"];
   }
   $arr["B{$I}"]="A";
   print_r($arr2);
};
$x(10);
$x(20);
?>
Здесь создаю массив, его передаею в новый массив и в этом новом массиве хочу заменить 10-й и 20-й элементы на букву А, только мне нужно что бы этот массив вывело один раз с этими измененными элементами. А по сути я получаю на экране два раза массив arr2 в первом изменен только 10-й элемент а во втором 20-й.
Подскажите как побороть эту проблемку? Может стоит прописать в замыкании цикл? Подскажите какой?
Заранее благодарен!!!
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
17.06.2012, 01:45
возможно так
PHP
1
2
3
4
5
6
7
8
9
10
11
// массив по умолчанию
$arr["a{$N}"] = "Hello, world, I am {$N}.";
 
$x = function ($new) use (&$arr)
{
    $new[] = $arr;
    $new[10] = 'A';
    $new[20] = 'A';
 
    return print_r($new);
}
0
1 / 1 / 0
Регистрация: 11.11.2010
Сообщений: 34
17.06.2012, 19:35  [ТС]
К сожалению не подходит. Ваш код выводит такого рода массивы:
Array ( [0] => Array ( [a0] => Hello, world, I am 0. [a1] => Hello, world, I am 1. ... [a99] => Hello, world, I am 99. ) [10] => A [20] => A ).

Добавлено через 22 минуты
Проблема решена!
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
<?php
for ($N=1;$N<=100;$N++)
    {
     $arr["a{$N}"] = "Hello, world, I am {$N}.";
    }
    print_r ($arr);
 
    $x = function ($I) use ($arr)
     {
      for ($Z=1;$Z<=100;$Z++)
          {
           $arr2["B{$Z}"] = $arr["a{$Z}"];
          }
      for ($i=$I; $i<=100; $i++)
          {
            if (($i % $I)==0)
             { 
          $arr2["B{$i}"]="  ";
             }
           }
           print_r ($arr2);
 
      };
$x(10);
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.06.2012, 19:35
Помогаю со студенческими работами здесь

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц)
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

Замыкания
В этом примере создается внутренняя функция func, изнутри которой доступны как локальные переменные, так и переменные внешней функции...

Замыкания
чего-то я не понял почему данный код работает function multiplier( factor) { return function( number) { return...

Замыкания и this
Здравствуйте. Вопрос таков: у меня есть две функции, по сути одинаковые геттеры, но при компиляции кода, функция, где мы возвращаем...

Замыкания
Напишите программу генератора чисел Фибоначчи используя замыкания. Вопрос: функция, допустим, описана, а где здесь замыкание...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru