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
Форумы портала PHP.SU :: Версия для печати :: Помогите с foreach
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите с foreach

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

1. Maksim337 - 30 Августа, 2009 - 21:16:51 - перейти к сообщению
Я знаю что foreach работает не с самим массивом,а с его копией.
У меня такая ситуация прохожу по массиву с помощью foreach и если элемент соответствует определенному условию то он умножаеться на 37.
Так вот сколько не умножай масив то копияНедовольство, огорчение
А нужно чтобы изменения которые я делаю при помощи foreach сохранялись. Подскажите как и если можно на примерчике,зарание спасибо...
2. Roler - 30 Августа, 2009 - 21:18:10 - перейти к сообщению
Массив какой, ассоциативный? Всмысле, ключами являются строки или просто цифры?
3. Champion - 30 Августа, 2009 - 21:19:26 - перейти к сообщению
У тебя ж есть имя массива и ключ. Умножь и посмотри, что будет. Сразу обрадуешься.
4. Maksim337 - 30 Августа, 2009 - 21:19:49 - перейти к сообщению
просто цифри
5. Roler - 30 Августа, 2009 - 21:22:44 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1. $count = count(array);
  2. for($i=0; $i<=$count; ++$i)
  3. {
  4. $array[$i] = $array[$i] * 37;
  5. }
6. Maksim337 - 30 Августа, 2009 - 21:24:56 - перейти к сообщению
а как-то передать по ссылке можно значение?
7. Roler - 30 Августа, 2009 - 21:25:56 - перейти к сообщению
Вопрос не понял. Зачем что-то передавать по ссылке? Вы функцию такую хотите сделать?
8. Maksim337 - 30 Августа, 2009 - 21:33:13 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. for($i=0; $i<=36; $i++)
  2.                                                                 {
  3.                                                                  if(in_array($m_o[i],$k_m))
  4.                                                                                                 {
  5.                                                                                                         $m_o[i]*37;
  6.                                                                         }
  7.                                         }

вот код чето ошибку выдаетНедовольство, огорчение
9. Ch_chov - 30 Августа, 2009 - 21:38:03 - перейти к сообщению
Цитата:
$m_o[i]*37;

Наверно здесь.
10. Maksim337 - 30 Августа, 2009 - 21:41:14 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. for($i=0; $i<=36; $i++)
  2.                                                                 {
  3.                                                                  if(in_array($m_o[$i],$k_m))
  4.                                                                                                 {
  5.                                                                                                         $m_o[$i]*37;
  6.                                                                         }
  7.                                         }

Ch_chov логично ;) там не просто и написать а как переменную надо
(Добавление)
Roler спасибо что идейку подкинул...а то зациклился на foreach и голову ламаю а есть же много другогоУлыбка всем пасибо
11. Ch_chov - 30 Августа, 2009 - 21:50:39 - перейти к сообщению
Можешь вообще без циклов обойтись.
array_map
12. Roler - 31 Августа, 2009 - 11:28:29 - перейти к сообщению
Можно в принципе, но ведь по сути это и есть цикл, придётся функцию для проверки писать, если на один раз - то проще явным циклом.
13. JustUserR - 31 Августа, 2009 - 11:37:35 - перейти к сообщению
Roler Хм а мне казалось что array_map немного быстрее будет работать чем цикл (Я гдето читал про причина такого поведения - также оно и в Perlе)
14. Stierus - 31 Августа, 2009 - 11:56:58 - перейти к сообщению
Не понял, в чем проблема о_О

есть массив $array = array(1=>1, 2=>2, 3=>3);
есть foreach
PHP:
скопировать код в буфер обмена
  1. foreach($array as $key=>$value){
  2.    if($value==2){
  3.       $array[$key] = $array[$key] * 37; //Тут мыф по ключу $key изменяем исходный массив
  4.    }
  5. }


что не так-то ?
15. Maksim337 - 31 Августа, 2009 - 17:50:58 - перейти к сообщению
Stierus а проблема в том что foireach работает с копией массива,тоесть оригинал останеться таким же...

 

Powered by ExBB FM 1.0 RC1