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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #4 : 25-01-2006 18:21 » |
|
Slavik333, и не стыдно тебе?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Slavik333
Гость
|
|
« Ответ #5 : 25-01-2006 18:48 » |
|
Пока учу - нет
|
|
|
Записан
|
|
|
|
Slavik333
Гость
|
|
« Ответ #6 : 25-01-2006 18:48 » |
|
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #15 : 28-01-2006 20:21 » |
|
И строку урла!
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Slavik333
Гость
|
|
« Ответ #16 : 29-01-2006 21:17 » |
|
<?php if(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 » |
|
Огромное спасибо,теперь я понял... Вот теперь работает... Очень извеняюсь,но этого я не понимал с объяснений на оф.сайте... <?php 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}; } } 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 » |
|
Это просто описка
|
|
|
Записан
|
|
|
|
|