Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Строку преобразовать в массив и вывести
 
 автор: Blizard   (23.07.2009 в 18:54)   письмо автору
 
 

есть строка str такого вида:

ыыы ~ ыфвфыв ~ 123243 ~ dfsdf ~

пытаюсь ее преобразовать в массив с четерьмя элементами, а дальше - вывести все элементы в столбик

пробую так:


 
       function count( mixed_var, mode ) 
       {   
             var key, cnt = 0;    
             if( mode == 'COUNT_RECURSIVE' ) mode = 1;   
             if( mode != 1 ) mode = 0;   
    
             for (key in mixed_var)
             {   
                       cnt  ;   
                       if( mode==1 && mixed_var[key] && (mixed_var[key].constructor === Array || mixed_var[key].constructor === Object) ){   
                      cnt  = count(mixed_var[key], 1);   
                                                      }   
             }   
    
      return cnt;   
     }  
  
       var m;
        var result = "";
        var mesmas = new Array();
        mesmas = mesmas.split("~");
        
        var co = count(mesmas, 'COUNT_RECURSIVE');  

        for (m=0;m<co;m++)
        {
         result+=mesmas[m]+"<br>";
         }
       
          mes.innerHTML=result;     



не работает, в чем тут ошибка?

  Ответить  
 
 автор: PAT   (23.07.2009 в 19:14)   письмо автору
 
   для: Blizard   (23.07.2009 в 18:54)
 

<script>
var str = 'ыыы ~ ыфвфыв ~ 123243 ~ dfsdf ~';
var str0 = str.replace (/\s?\~\s?/g, '<br>\n')
alert (str0);
</script>

  Ответить  
 
 автор: Blizard   (23.07.2009 в 19:37)   письмо автору
 
   для: PAT   (23.07.2009 в 19:14)
 

PAT, я наверно немного не корректно задал вопрос, цель не только вывести массив, но и каждый элемент, который является строкой какого-либо юзера чата, но ии преобразовывать исходя из настроек данного пользователя, шрифт, цвет и т.д., а также после будет необходимость выводить не все содержимое файла, а например 10 последних элементов, для тех пользователей. которые например толькочто зашли в чат, поэтому подкорректирую вопрос -- как вывести строку в столбик используя массив? в итоге в дальнейшем с ним удобнее и проще будет работать
Я свой вариант показал, по логике ведь там наверняка все правильно, но не вижу ошибки..

  Ответить  
 
 автор: AlexSol   (23.07.2009 в 20:14)   письмо автору
 
   для: Blizard   (23.07.2009 в 19:37)
 

mes.innerHTML = mesmas.split("~").join('<br>');

  Ответить  
 
 автор: Blizard   (24.07.2009 в 07:44)   письмо автору
 
   для: AlexSol   (23.07.2009 в 20:14)
 

AlexSol, похоже ошибка в чем-то другом.. Посмотрите мой код, что там не правильно? Т.е. я не прошу предложить альтернативный вариант решения задачи, я прошу сказать, что я не правильно написал.

  Ответить  
 
 автор: PAT   (24.07.2009 в 09:58)   письмо автору
 
   для: Blizard   (24.07.2009 в 07:44)
 

У вас написан БРЕД, разбирать который смысла нет.
Например, переменная mesmas объявляется как массив:
var mesmas = new Array();
И следующим действием этот только лишь объявленный (но неопределённый) массив методом split () ДЕЛИТСЯ... "в новые массивчики", что ли?
mesmas = mesmas.split("~"); 
А метод split () применяется только к СТРОКЕ...

  Ответить  
 
 автор: Blizard   (24.07.2009 в 10:32)   письмо автору
 
   для: PAT   (24.07.2009 в 09:58)
 

Согласен, тогда получается так:

str=xmlElement.firstChild.data;

var m;
var result = "";
var mesmas = new Array();
mesmas = str.split("~");

var co = count(mesmas, 'COUNT_RECURSIVE');

for (m=0;m<co;m++)
{
result+=mesmas[m]+"<br>";
}

mes.innerHTML=result;

Не работает (

  Ответить  
 
 автор: PAT   (24.07.2009 в 10:47)   письмо автору
 
   для: Blizard   (24.07.2009 в 10:32)
 

Повторяю - БРЕД у вас везде.
В каждой строке.
Например, метод split () разбивает строку на ИНДЕКСНЫЙ массив mesmas.
Который вы отсылаете функции count (), которая ЯКОБЫ работает с ХЕШ-массивом.
"ЯКОБЫ работает"... потому что синтаксически написана БЕЗГРАМОТНО.
Например - это ЧТО?
for (key in mixed_var)
             {   
                       cnt  ; 

Что означает написанное во второй строке cnt; ?
Что с ним делать-то надо?
Вы знаете?
Нет, не знаете.
И совсем НИКТО не знает.
И браузер не знает.

Там бреда ещё много.
Повторяю - он в каждой строке.

  Ответить  
 
 автор: Blizard   (24.07.2009 в 11:21)   письмо автору
 
   для: PAT   (24.07.2009 в 10:47)
 

PAT, я эту функцию взял на каком-то форуме в разделе функций javascript аналогов ф-ий php.
В javascript ведь нельзя count сделать, как в php, поэтому я искал, как это обыграть иначе, в интернете по этому поводу мало очень информации. Как подругому посчитать количество элементов массива? Если бы я сам мог определить где бред, а где не бред, я бы не пришел на этот форум. Мне нужна помощь. Я ведь не прошу написать за меня, я показал свой вариант, он неправильный, то что указываете, где бред - это очень помогает, но в данном случае у меня нет вариантов - как это бред заменить не бредом, поэтому прошу помощи у вас. Скажите, как в javascript делается count?

  Ответить  
 
 автор: AlexSol   (24.07.2009 в 12:38)   письмо автору
 
   для: Blizard   (24.07.2009 в 11:21)
 

var leng = array.length

но если вам надо собрать в рямой последовательности, т.е. заменив ~ на <br> -- смотрите первый вариант. все делается в одну строку

  Ответить  
 
 автор: Blizard   (24.07.2009 в 12:52)   письмо автору
 
   для: AlexSol   (24.07.2009 в 12:38)
 


str=xmlElement.firstChild.data;

var m; 
var result = ""; 
var mesmas = new Array(); 
mesmas = str.split("~"); 

var co = mesmas.length; 

for (m=0;m<co;m++) 

result+=mesmas[m]+"<br>"; 


mes.innerHTML=result;


Где-то еще ошибка есть, т.к. так тоже не работает (

  Ответить  
 
 автор: Blizard   (24.07.2009 в 13:07)   письмо автору
 
   для: Blizard   (24.07.2009 в 12:52)
 

Все, наконецто заработало, AlexSol, PAT, спасибо вам! Я еще вернусь с вопросами )

  Ответить  
 
 автор: AlexSol   (24.07.2009 в 13:08)   письмо автору
 
   для: Blizard   (24.07.2009 в 12:52)
 

все это заменяется строкой

mes.innerHTML = xmlElement.firstChild.data.split("~").join('<br>');

  Ответить  
 
 автор: Blizard   (24.07.2009 в 13:45)   письмо автору
 
   для: AlexSol   (24.07.2009 в 13:08)
 

AlexSol, потом с сообщениями нужно будет работать, с массивом легче

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования