Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу разобраться с sort...  (Прочитано 16993 раз)
0 Пользователей и 1 Гость смотрят эту тему.
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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 25-01-2006 18:21 » 

Slavik333, и не стыдно тебе?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Slavik333
Гость
« Ответ #5 : 25-01-2006 18:48 » 

Пока учу - нет Улыбаюсь
Записан
Slavik333
Гость
« Ответ #6 : 25-01-2006 18:48 » 

Так что это за ошибка Не понялНе понялНе понялНе понялНе понялНе понял??
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 26-01-2006 05:29 » 

Ф-ия str_split() появилась только в php5, а большинство хостеров и админов по прежнему используют php4 (ждут когда найдут и поправят основные баги, а так же решат вопрос совместимости с 3 и 4). Быстрее всего у тебя стоит php4.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #14 : 28-01-2006 19:29 » 

Так,
давай сюда весь код от формирования массива, его разбивки и попытки отсортировать.
Иначе тут гадать и дискутировать бесполезно.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #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($fpimplode(""$file));
fclose($fp);

print"<center><h3>Сообщение<br>удалено.</h3></center>";
print"<center><a href=&#39;../index.php&#39;><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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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 » 

Это просто описка Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines