| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | «  : 25-01-2006 15:35 »  |  | 
 
 Не могу ни как разобраться с сортировкой массива...Через get я получаю номера сообщений , которые необходимо удалить...
 Далее , мне нужно отсортировать полученные числа разделённые запятыми  по возрастанию...
 str_split почему-то не пашет.
 
 Пробовал и так:
 
 <PHP
 $check_len="";
 for($a=0;$a<strlen($checked);$a++)
 {
 if(isset($checked{$a}) and $checked{$a}!=",")
 {
 print $checked{$a};
 $check_len+=$checked{$a};
 }
 }
 PHP/>
 
 но вы понимаете что происходит...
 цыфры просто прибавляются друг к другу...
 Подскажите , плззз , как лучше с этим справиться...
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 25-01-2006 15:37 от Slavik333 » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #1 : 25-01-2006 17:44 »  |  | 
 
 Все правильно. Энный раз говорю: надо доки читать!Это не basic, а php:
 1) '+' - оператор сложения чисел
 2) '.' - оператор объединения строк
 
 А вообще-то, не мучай себя. Почитай внимательно доку и нарезай строку одной ф-ией, а не перебором. Все условия давно созданы.
 |  
						| 
								|  |  
								| « Последнее редактирование: 20-12-2007 17:00 от Алексей1153++ » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #2 : 25-01-2006 18:14 »  |  | 
 
 Да , спасибо , я это упустил   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #3 : 25-01-2006 18:16 »  |  | 
 
 Warning: sort() expects parameter 1 to be array, string given in z:\home\prokaznik.ru\www\guest_book_whith_javascript\admin\functions_admin.php on line 50
 а что это за ошибка
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #4 : 25-01-2006 18:21 »  |  | 
 
 Slavik333, и не стыдно тебе? |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #5 : 25-01-2006 18:48 »  |  | 
 
 Пока учу - нет   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #6 : 25-01-2006 18:48 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #7 : 25-01-2006 19:01 »  |  | 
 
 Учить надо с книгами и справочниками. Благо в интернете есть лучший справочник по php - на сайте www.php.net  .http://www.php.net/manual/ru/function.sort.php  - здесь _полностью_ описана ф-ия sort(), со всеми ее параметрами. И английский то же надо учить! В ошибке написано почти русским языком: ф-ия sort() ожидает первым параметром массив ! |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #8 : 25-01-2006 21:13 »  |  | 
 
 tak eto i est massiv !!! |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #9 : 25-01-2006 22:36 »  |  | 
 
 А ты проверь: if (is_array($var)) echo "Да, это массив!" else echo "Нет, это " . gettype($var);
 И ссылку мою читай внимательно! По умолчанию, сравнение идет без изменения типов. Попробуй задать принудительно числовую сортировку.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #10 : 25-01-2006 23:23 »  |  | 
 
 Fatal error: Call to undefined function: str_split() in z:\admin\functions_admin.php on line ...
 
 A eto chto za oshibka???
 |  
						| 
								|  |  
								| « Последнее редактирование: 25-01-2006 23:58 от Slavik333 » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #11 : 26-01-2006 05:29 »  |  | 
 
 Ф-ия str_split() появилась только в php5, а большинство хостеров и админов по прежнему используют php4 (ждут когда найдут и поправят основные баги, а так же решат вопрос совместимости с 3 и 4). Быстрее всего у тебя стоит php4.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #12 : 26-01-2006 10:54 »  |  | 
 
 Slavik333, Если ты с помощью str_split() пытаешся разбить строку на массив например по запятым, то используй тогда поддерживаемую ПХП4 функцию explode(); <?php$string = "a,b,v,g,d,e";
 $arr_from_string = explode(",", $string);
 ?>
 
ЗЫ. Присоединяюсь к RXL. Внимательно читай, да и вообще читай официальную документацию от производителей! Это лучший учебник. |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #13 : 27-01-2006 13:48 »  |  | 
 
 Кстати я читаю,но иногда не понятны некоторые объяснения...В этом-то и дело,что explode-ом уже разбито...а всё равно не хочет принимать за массив...
 
 if (is_array($var)) echo "Да, это массив!" else echo "Нет, это " . gettype($var);
 
 (Нет, это string)
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #14 : 28-01-2006 19:29 »  |  | 
 
 Так,давай сюда весь код от формирования массива, его разбивки и попытки отсортировать.
 Иначе тут гадать и дискутировать бесполезно.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #15 : 28-01-2006 20:21 »  |  | 
 
 И строку урла! |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #16 : 29-01-2006 21:17 »  |  | 
 
 <?phpif(session_is_registered("admin"))
 {
 if(isset($check) and @$check>=0)
 {
 $line=$check-1;                        //#line-это возврат выделения с книги
 $file=file("../messages/messages.txt");
 $fp=fopen("../messages/messages.txt", "w+");
 
 for($i=0;$i<count($file);$i++)
 {
 if($i==$line)
 {
 unset($file[$line]);
 }
 }
 fputs($fp, implode("", $file));
 fclose($fp);
 
 print"<center><h3>Сообщение<br>удалено.</h3></center>";
 print"<center><a href='../index.php'><sub>Back</sub></a></center>";
 exit;
 }
 if(session_is_registered("admin"))
 {
 if(isset($checked))
 {
 $check_len=array("", "");
 for($a=0;$a<strlen($checked);$a++)
 {
 if(isset($checked{$a}) and $checked{$a}!=",")
 {
 print $checked{$a};
 $check_len.=$checked{$a};
 }
 }
 if (is_array($check_len))
 { print "Да, это массив!";}
 else
 {
 print "Нет, это " . gettype($check_len);
 }
 $check_len=str_split($check_len);
 sort($check_len);
 print "<br>".$check_len;
 }}
 ?>
url=C:\WebServers\home\site.ru\www\Guest_book_whith_JavaScript\admin  сайт на харде... |  
						| 
								|  |  
								| « Последнее редактирование: 20-12-2007 17:08 от Алексей1153++ » |  Записан | 
 |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #17 : 30-01-2006 11:52 »  |  | 
 
 Такс,  всё понятно. Твоя ошибка в том что ты плохо понимаеш что делает .= В коде  <?php$check_len=array("", ""); //В этом нет необходимости
 for($a=0;$a<strlen($checked);$a++)
 {
 if(isset($checked{$a}) and $checked{$a}!=",")
 {
 print $checked{$a};
 $check_len.=$checked{$a}; // Вот сдесь неправильно!
 }
 }
 ?>
 
ты просто напросто используеш конкатенацию и в итоге получаеш строку а не массив. А надо так : <?php$check_len = array();
 for($a = 0; $a < strlen($checked); $a++)
 {
 if( isset($checked{$a}) && $checked{$a} !== "," )
 {
 print $checked{$a};
 $check_len[] = $checked{$a}; //Вот так мы заполняем массив!
 }
 }
 ?>
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 01-02-2006 05:30 от MOPO3 » |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #18 : 31-01-2006 23:01 »  |  | 
 
 Огромное спасибо,теперь я понял... Вот теперь работает... Очень извеняюсь,но этого я не понимал с объяснений на оф.сайте... <?phpif(session_is_registered("admin"))
 {
 if(isset($checked))
 {
 $check_len=array();
 for($a=0;$a<strlen($checked);$a++)
 {
 if(isset($checked{$a}) and $checked{$a}!==",")
 {
 print $checked{$a};
 $check_len[]=$checked{$a};
 }
 }
 sort($check_len);
 print"<br>";
 for($s=0;$s<count($check_len);$s++)
 {
 print $check_len[$s];
 }
 }
 ?>
 |  
						| 
								|  |  
								| « Последнее редактирование: 01-02-2006 12:30 от Slavik333 » |  Записан | 
 |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #19 :  01-02-2006 05:27 »   |  | 
 
 Slavik333, а зачем два раза подряд одна и таже проверка   if(session_is_registered("admin")){
 if(session_is_registered("admin"))
 {
 |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| Slavik333 
								Гость
 | 
								|  | « Ответ #20 : 01-02-2006 12:31 »  |  | 
 
 Это просто описка   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |