Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: 2 разных по типу массива должны выводить одно и тоже

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
lawer85
Отправлено: 20 Января, 2013 - 17:38:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Вот какое задание мне надо сделать

1. Создайте массив из 3 значений "один","два","три"
2. Создайте функцию, которая принимает число в виде строки а возвращает само число. Например приняло "два", а возвратило 2
3. Создайте массив из 100 элементов. Значение каждого элемента должно высчитываться по правилу: (номер итерации * х), где х - это число, возвращаемое функцией, созданной во 2 пункте. Параметр для функции - это элемент массива, созданного в 1 пункте, где индекс равен остатку от деления на 3 номера итерации.
4. Выведите получившийся массив, используя цикл for.
5. Создайте ассоциативный массив, где ключи имеют значения: "один","два","три", а значения 1,2 и 3 соответственно.
6. Создайте массив как в 3 пункте, но без использования функции и с использованием массива, созданного в 5 пункте.
7. Выведите получившийся массив, используя цикл while.
8. Убедитесь, что массивы из 4 и 5 пунктов одинаковы.

Вот код, который я написал, но результат кода явно не то что требуется. Укажите пожалуйста где в коде у меня ошибки и что нужно подправить (изменить), чтобы все было верно?


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $x = array("один","два","три");
  4. function getout($t) {
  5. if ($t == "один") return 1;
  6. elseif ($t == "два") return 2;
  7. elseif ($t == "три") return 3;
  8. }
  9.  
  10. for ($i = 0; $i < 100; $i++) {
  11. $g = array(getout($i * ($x[$i % 3])));
  12. print_r ($g);
  13. }
  14. echo "<br />";
  15. $s = array("один" => 1, "два" => 2, "три" => 3);
  16. $j = 0;
  17. while ($j < 100) {
  18.  
  19. foreach ($s as $l => $p);
  20. $r = array($j * ($p%3));
  21. $j++;
  22. print_r ($r);
  23. }
  24. ?>
 
 Top
lawer85
Отправлено: 20 Января, 2013 - 21:21:59
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Я исправил первую часть кода теперь вроде ок

PHP:
скопировать код в буфер обмена
  1. $x = array("один","два","три");
  2. function getout($t) {
  3. if ($t == "один") return 1;
  4. elseif ($t == "два") return 2;
  5. elseif ($t == "три") return 3;
  6. }
  7.  
  8. for ($i = 0; $i < 100; $i++ ) {
  9. $g[$i] = ($i * getout($x[$i % 3]));
  10.  
  11. }
  12. print_r ($g);


Но с ассоциативным массивом уже сложнее
 
 Top
spsu
Отправлено: 20 Января, 2013 - 21:32:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012  


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. $x = array("один","два","три");
  2. function getout($t) {
  3. if ($t == "один") return 1;
  4. elseif ($t == "два") return 2;
  5. elseif ($t == "три") return 3;
  6. }
  7.  
  8. for ($i = 0; $i < 100; $i++) {
  9. $g = array(getout($i * ($x[$i % 3]))); //Ошибка! Каждый раз создаешь новый массив
  10. print_r ($g);
  11. }
  12. echo "<br />";
  13. $s = array("один" => 1, "два" => 2, "три" => 3);
  14. $j = 0;
  15. while ($j < 100) {
  16.  
  17. foreach ($s as $l => $p); //Хз, что это и зачем....
  18. $r = array($j * ($p%3));  //Ошибка! Каждый раз создаешь новый массив
  19. $j++;
  20. print_r ($r);
  21. }


Цитата:
6. Создайте массив как в 3 пункте, но без использования функции и с использованием массива, созданного в 5 пункте.

Как? Что-то не понятно просто номером итерации заполнить?
Получилось у меня два массива из едениц..

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $x = array("один","два","три");
  4. function getout($t) {
  5. if ($t == "один") return 1;
  6. elseif ($t == "два") return 2;
  7. elseif ($t == "три") return 3;
  8. }
  9.  
  10.  
  11. $g = array();
  12. for ($i = 0; $i < 100; $i++) {
  13.         $g[] = getout($i * ($x[$i % 3]));
  14. }
  15.  
  16. for ($i=0; $i < 100; $i++) {
  17.         print $g[$i];
  18. }
  19.  
  20.  
  21. $s = array("один" => 1, "два" => 2, "три" => 3);
  22.  
  23. $i = 0;
  24. $r = array();
  25. while ($i < 100) {
  26.         $r[] = $i;
  27.         $i++;
  28. }
  29.  
  30. print PHP_EOL;
  31.  
  32. $i = 0;
  33. while ($i < 100){
  34.         print $g[$i];
  35.         $i++;
  36. }
  37.  
  38.  
  39.  
  40. ?>

(Отредактировано автором: 20 Января, 2013 - 21:35:27)

 
 Top
lawer85
Отправлено: 20 Января, 2013 - 22:03:58
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Не пойму как у тебя в первом массиве выходят все 1, например при значении i = 2 у нас выходит 4, которое записывается в очередной индекс
(Добавление)
На счет ассоциативного массива из 6 п я спрошу у того кто писал задание, это я взял из курса по PHP
(Добавление)
lawer85 пишет:
Не пойму как у тебя в первом массиве выходят все 1, например при значении i = 2 у нас выходит 4, которое записывается в очередной индекс
(Добавление)
На счет ассоциативного массива из 6 п я спрошу у того кто писал задание, это я взял из курса по PHP


А все теперь понял. Я сам сначала так ошибся. Смотри в задании

Цитата:
(номер итерации * х), где х - это число, возвращаемое функцией, созданной во 2 пункте


т.е. не
PHP:
скопировать код в буфер обмена
  1. $g[] = getout($i * ($x[$i % 3]));
а вот так

(Отредактировано автором: 20 Января, 2013 - 22:04:27)

 
 Top
lawer85
Отправлено: 24 Января, 2013 - 14:31:41
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Вобщем сам решил как сделать. Оба массива в итоге совпадают.


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $x = array("один","два","три");
  4. function getout($t) {
  5. if ($t == "один") return 1;
  6. elseif ($t == "два") return 2;
  7. elseif ($t == "три") return 3;
  8. }
  9.  
  10. for ($i = 0; $i < 100; $i++ ) {
  11. $g[] = ($i * getout($x[$i % 3]));
  12.  
  13. }
  14. print_r ($g);
  15. echo "<br />";
  16. echo "<br />";
  17. $s = array("один" => 1, "два" => 2, "три" => 3);
  18. $j = 0;
  19.  
  20. while ($j < 100) {
  21.  
  22. $r[]= ($j * $s[$x[$j % 3]]);
  23. $j++;
  24.  
  25. }
  26. print_r ($r);
  27. ?>

(Отредактировано автором: 24 Января, 2013 - 14:33:13)

 
 Top
Armiferus
Отправлено: 29 Октября, 2013 - 21:56:38
Post Id



Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Приветствую! А где продолжение? Улыбка Я вот с массивами долбался больше месяца-двух. Ну не понял ничего, только выводил правильно начало задания. В общем, давайте дальше решать двумерные массивы и так далее. ок?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB