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 :: Массивы и цыклы

 PHP.SU

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


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

> Без описания
juramaj
Отправлено: 05 Февраля, 2015 - 13:36:40
Post Id


Гость


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


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




Доброго времени суток всем! Столкнулся с такой ситуацией: у меня приходит массив со значениями вот такой:
PHP:
скопировать код в буфер обмена
  1. string 'USD' (length=3)
  2. string '16.9991 ' (length=8)
  3. string '17.2239 ' (length=8)
  4. string 'EUR' (length=3)
  5. string '20.4290 ' (length=8)
  6. string '21.1074 ' (length=8)
  7. string 'RUB' (length=3)
  8. string '0.2515 ' (length=7)
  9. string '0.2862 ' (length=7)

Как мне сделать чтобы выводило вот так:
USD 16.9991 17.2239
EUR 20.4290 21.1074
RUB 0.2515 0.2862
 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 13:57:04
Post Id



Участник


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


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




juramaj, а как сейчас выводите?
Если всё сплошняком в одном массиве $arr('valuta1', 'price1_0', 'price1_1', 'valuta2'/* ... */), то можно, например, так:
PHP:
скопировать код в буфер обмена
  1. $cnt = count($arr);
  2. $N = (int)($cnt/3);
  3. for($i = 0; $i < $cnt; $i+=$N) {
  4.     echo "{$arr[$i]} {$arr[$i+1]} {$arr[$i+2]}<br>";
  5. }

А можно и пересмотреть структуру массива, чтобы выполнять меньше вычислений Улыбка

(Отредактировано автором: 05 Февраля, 2015 - 13:57:38)

 
 Top
juramaj
Отправлено: 05 Февраля, 2015 - 14:14:32
Post Id


Гость


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


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




Sail пишет:
juramaj, а как сейчас выводите?
Если всё сплошняком в одном массиве $arr('valuta1', 'price1_0', 'price1_1', 'valuta2'/* ... */), то можно, например, так:
PHP:
скопировать код в буфер обмена
  1. $cnt = count($arr);
  2. $N = (int)($cnt/3);
  3. for($i = 0; $i < $cnt; $i+=$N) {
  4.     echo "{$arr[$i]} {$arr[$i+1]} {$arr[$i+2]}<br>";
  5. }

А можно и пересмотреть структуру массива, чтобы выполнять меньше вычислений Улыбка

Ничего не выводит. Может из-за того что у меня переменная которая имеет массив выглядит вот так $vall->plaintext
 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 14:22:34
Post Id



Участник


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


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




juramaj, религия не позволяет в демонстрационном примере изменить название переменной $arr, содержащей массив, или присвоить $arr = $my_array_value?
Или plaintext - это вообще одна сплошная строка?
в студию, пожалуйста, пригласите....
 
 Top
juramaj
Отправлено: 05 Февраля, 2015 - 14:28:50
Post Id


Гость


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


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




Вот такое выводит:
PHP:
скопировать код в буфер обмена
  1. string 'USD' (length=3)
  2. string '16.9991 ' (length=8)
  3. string '17.2239 ' (length=8)
  4. string 'EUR' (length=3)
  5. string '20.5353 ' (length=8)
  6. string '21.2444 ' (length=8)
  7. string 'RUB' (length=3)
  8. string '0.2520 ' (length=7)
  9. string '0.2873 ' (length=7)
 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 14:42:09
Post Id



Участник


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


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




juramaj пишет:
Вот такое выводит:

Повторюсь: "как сейчас выводите?"
Перефразирую: "Приведите, пожалуйста, участок кода, осуществляющий вывод информации о валютах".
 
 Top
juramaj
Отправлено: 05 Февраля, 2015 - 14:45:18
Post Id


Гость


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


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




Вот код:
PHP:
скопировать код в буфер обмена
  1.  foreach($html->find('.b-table-currency') as $element) { //выборка всех тегов img на странице
  2.                        $valstr = $element->find('tbody tr td');
  3.                        foreach($valstr as $vall){
  4.              
  5.                           for ($i = 0; $i < 3; ++$i)
  6.                           {
  7.                               for ($j = 0; $j < 3; ++$j){
  8.                                   echo( $vall->plaintext[$j+$i*3]);
  9.                                  
  10.                               }
  11.                           }
  12.                        
  13.                        }
  14.                      
  15.                     }
 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 15:02:52
Post Id



Участник


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


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




juramaj, добавьте "echo '<br>';" первым оператором цикла по "i".
 
 Top
juramaj
Отправлено: 05 Февраля, 2015 - 15:09:42
Post Id


Гость


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


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




выводит по 3 символа на строке
 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 15:14:12
Post Id



Участник


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


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




juramaj, всё ближе и ближе Улыбка
Переместите тот оператор циклом выше...
(Добавление)
или двумя...
 
 Top
juramaj
Отправлено: 05 Февраля, 2015 - 15:21:39
Post Id


Гость


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


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




когда я написал вот такой код:
PHP:
скопировать код в буфер обмена
  1. foreach($html->find('.b-table-currency') as $element) { //выборка всех тегов img на странице
  2.                        $valstr = $element->find('tbody tr td');
  3.                        foreach($valstr as $vall){
  4.                         // var_dump($vall->plaintext);
  5.  
  6.                        
  7.  
  8.  
  9.  
  10.                        
  11.                          for ($i = 0; $i < 3; ++$i)
  12.                           {
  13.                               for ($j = 0; $j < 3; ++$j){
  14.  
  15.                                   echo($vall->plaintext[$j+$i*3]);
  16.                                  // echo "<br/>";
  17.                               }
  18.                              // echo "<br/>";
  19.                           }
  20.                           echo "<br/>";  
  21.                        
  22.                        // var_dump($vall->plaintext).'<br/>';
  23.                        }
  24.                       //echo "<br/>";        
  25.                     }

То у меня вывело вот что:
USD
16.9991
17.2239
EUR
20.5353
21.2444
RUB
0.2520
0.2873
 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 15:25:05
Post Id



Участник


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


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




juramaj, вот сразу бы таким образом вопрос оформили-б! Улыбка
в 20-й строке выводите пробел, а 24-ю - раскомментируйте.
 
 Top
juramaj
Отправлено: 05 Февраля, 2015 - 15:29:08
Post Id


Гость


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


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




Sail пишет:
juramaj, вот сразу бы таким образом вопрос оформили-б! Улыбка
в 20-й строке выводите пробел, а 24-ю - раскомментируйте.

Так теперь оно выводит вот так:
USD 16.9991 17.2239 EUR 20.5353 21.2444 RUB 0.2520 0.2873
А нужно вот так:
USD 16.9991 17.2239
EUR 20.4290 21.1074
RUB 0.2515 0.2862
Как так сделать?
 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 15:33:27
Post Id



Участник


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


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




juramaj, раскомментировали 24-ю строчку, с выводом "<br>"?
 
 Top
juramaj
Отправлено: 05 Февраля, 2015 - 15:35:57
Post Id


Гость


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


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




Sail пишет:
juramaj, раскомментировали 24-ю строчку, с выводом "<br>"?

Да, всё сделал так как вы сказали
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB