PHP.SU

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


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

> Описание: Undefined variable: sort (((
thefreedom
Отправлено: 27 Августа, 2020 - 09:15:51
Post Id



Новичок


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


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




Всем дооброго дня.
Пытаюсь организовать сортироквку по разным колонкам с запоминанием.

PHP:
скопировать код в буфер обмена
  1. function cmp($a,$b)
  2. {
  3. return strcmp($a[2], $b[2]);
  4. }


Сортирует по второй колонке, вместо 2 нужно поставить функцию $sort = "2"; чтобы можно было использовать в дальнейшем для кнопочек сортировки:

PHP:
скопировать код в буфер обмена
  1. $sort = "2";
  2. function cmp($a,$b)
  3. {
  4. return strcmp($a[$sort], $b[$sort]);
  5. }


Вылетают ошибки Undefined variable: sort...... Может я что-то не так делаю и так просто в эту функцию нельзя вставлять данные ?!

Подскажите пож. как правильно ?(


usort($myArray, function($a, $b){
return strcmp($a[0], $b[0]);
});
Правильнее сказать можно ли как-то использовать всмето 0 0 любое значение через присвоение...

(Отредактировано автором: 27 Августа, 2020 - 14:54:45)

 
 Top
Vladimir Kheifets
Отправлено: 27 Августа, 2020 - 14:49:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 559
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




thefreedom пишет:
Всем дооброго дня.
Пытаюсь организовать сортироквку по разным колонкам с запоминанием.
....
PHP:
скопировать код в буфер обмена
  1. $sort = "2";
  2. function cmp($a,$b)
  3. {
  4. return strcmp($a[$sort], $b[$sort]);
  5. }


Вылетают ошибки Undefined variable: sort...... Может я что-то не так делаю и так просто в эту функцию нельзя вставлять данные ?!

Подскажите пож. как правильно ?(

Добрый день!
значение variable: $sort не передаётся в функцию.
Добавьте аргумент $sort в function cmp($a,$b,$sort),
а в самой функции сделайте сортировку.
Функция strcmp только сравнивает две строки.

Удачи!

(Отредактировано автором: 27 Августа, 2020 - 14:55:58)

 
 Top
thefreedom
Отправлено: 27 Августа, 2020 - 15:02:24
Post Id



Новичок


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


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




Vladimir Kheifets пишет:
значение variable: $sort не передаётся в функцию.
Добавьте аргумент $sort в function cmp($a,$b,$sort),
а в самой функции сделайте сортировку.
Функция strcmp только сравнивает две строки.



Missing argument 3 for cmp() тогда ошибки о неправильном 3м аргументе (((

PHP:
скопировать код в буфер обмена
  1.  
  2. function cmp($a,$b,$sort)
  3. {
  4. return strcmp($a['$sort'], $b['$sort']);
  5. }
  6.  

(Отредактировано автором: 27 Августа, 2020 - 15:03:04)

 
 Top
Vladimir Kheifets
Отправлено: 27 Августа, 2020 - 15:31:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 559
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




thefreedom пишет:
Vladimir Kheifets пишет:
значение variable: $sort не передаётся в функцию.
Добавьте аргумент $sort в function cmp($a,$b,$sort),
а в самой функции сделайте сортировку.
Функция strcmp только сравнивает две строки.



Missing argument 3 for cmp() тогда ошибки о неправильном 3м аргументе (((

PHP:
скопировать код в буфер обмена
  1.  
  2. function cmp($a,$b,$sort)
  3. {
  4. return strcmp($a['$sort'], $b['$sort']);
  5. }
  6.  


При вызове функции должно указываться также три параметра cmp($a,$b,$sort)
Вроде Вы писали, хотите сделать сортировку.
Вас устраивает, что это функция возвращает результат сравнения строк.
Чем Вам не подходят стандартные функции PHP для сортировки по разным колонкам?

(Отредактировано автором: 27 Августа, 2020 - 15:34:56)

 
 Top
thefreedom
Отправлено: 27 Августа, 2020 - 15:53:24
Post Id



Новичок


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


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




Vladimir Kheifets пишет:
thefreedom пишет:
Vladimir Kheifets пишет:
значение variable: $sort не передаётся в функцию.
Добавьте аргумент $sort в function cmp($a,$b,$sort),
а в самой функции сделайте сортировку.
Функция strcmp только сравнивает две строки.



Missing argument 3 for cmp() тогда ошибки о неправильном 3м аргументе (((

PHP:
скопировать код в буфер обмена
  1.  
  2. function cmp($a,$b,$sort)
  3. {
  4. return strcmp($a['$sort'], $b['$sort']);
  5. }
  6.  


При вызове функции должно указываться также три параметра cmp($a,$b,$sort)
Вроде Вы писали, хотите сделать сортировку.
Вас устраивает, что это функция возвращает результат сравнения строк.
Чем Вам не подходят стандартные функции PHP для сортировки по разным колонкам?


$sort = file_get_contents('sort.txt', true); к примеру в нем будет цифра 3 и подставить её туда. Я просто не настолько силен в PHP поэтому и написал на форуме (((
Нужно отсортировать по первой колонки и оставить так потом по 3 и чтобы оно сохранилось значение в файл к примеру 3 в след раз будет открываться и сразу читать что сортировать по 3ке

(Отредактировано автором: 27 Августа, 2020 - 15:55:33)

 
 Top
imbecile
Отправлено: 05 Сентября, 2020 - 03:36:17
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2020  


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




плохому научу )
первой строкой в ф-ции cmp добавьте "global $sort;", $sort из параметров выкиньте
 
 Top
LIME
Отправлено: 06 Сентября, 2020 - 00:24:20
Post Id



Активный участник


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


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




imbecile нельзя
как потом повторно вызывать с другим сорт?? ересь полная
'$sort'
никого ничего не смущает? например интерпретиция строки в одинарных кавычках?


-----
: DDD
 
 Top
imbecile
Отправлено: 11 Сентября, 2020 - 17:47:52
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2020  


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




LIME пишет:
imbecile нельзя
как потом повторно вызывать с другим сорт?? ересь полная

присвоить другое значение $sort в глобальном scope, пожалуйста, перестаньте дуремарить ))
я бы, уж если так припёрло, обернул в класс и использовал бы обращение к свойству в колбэке
LIME пишет:
'$sort'
никого ничего не смущает? например интерпретиция строки в одинарных кавычках?

тс плохо понимает, что пишет
 
 Top
LIME
Отправлено: 11 Сентября, 2020 - 23:43:50
Post Id



Активный участник


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


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




imbecile пишет:
пожалуйста, перестаньте дуремарить ))
именно
переставай фигней страдать
imbecile пишет:
присвоить другое значение $sort в глобальном scope
это называется "шаблонный код"
тоесть тебе перед каждым вызовом надо будет непременно выставить правильный "$sort в глобальном scope", потому как даже если он такой же в следующем вызове, то что если он был изменен другим кодом?
он же глобальный
со всеми вытекающими
вот и будещь строки кода парочкой везде писать))
а еще может влезть какой-нибудь листенер/обсервер посреди работы и поменять $sort как ему будет вздумается
для кого умные дядьки области видимости придумывали а? хулиганье
(Добавление)
или наоборот
другой программист вот такой же умный тоже использует глобальный $sort в этом же проекте, но чуть глупее и не догадался перед каждым вызовом его выставлять(уже ржу)
ты же ему все сломаешь! айай
(Добавление)
$sort имячко-то довольно распространенное


-----
: DDD
 
 Top
imbecile
Отправлено: 22 Сентября, 2020 - 19:21:26
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2020  


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




Вы пропустили фразы "плохому научу" и про колбэк, ну да и пыр с ними
так-то в обществе борьбы с глобальными переменными года с 1993-го ещё состою, если не раньше )))
 
 Top
LIME
Отправлено: 22 Сентября, 2020 - 19:49:07
Post Id



Активный участник


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


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




ну допустим
только чем это проще передачи в параметере я всеравно не понимаю
даже сложнее чуток можно сказать


-----
: DDD
 
 Top
imbecile
Отправлено: 23 Сентября, 2020 - 09:53:58
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2020  


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




LIME пишет:
только чем это проще передачи в параметере я всеравно не понимаю

согласно https://www.php.net/manual/en/function.usort.php в value_compare_func передаются только значения из массива, нет дополнительных параметров, частный случай ебобы разрабов PHP.
 
 Top
LIME
Отправлено: 25 Сентября, 2020 - 16:44:38
Post Id



Активный участник


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


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




ну пожалуй соглашусь что такое решение
PHP:
скопировать код в буфер обмена
  1. function myUsort(&$arr, $columnNum)
  2. {
  3.     return usort($arr, function ($a, $b) use ($columnNum) {
  4.         return strcmp($a[$columnNum], $b[$columnNum]);
  5.     });
  6. }
будет выглядеть для тс как космический корабль
хааа)) ты понял да?)) космический корабль)) <=>
я в ударе блин)

imbecile пишет:
я бы, уж если так припёрло, обернул в класс и использовал бы обращение к свойству в колбэке

объект конечно тоже можно(в том смысле что результат произойдет), но получится сервис с состоянием, что по сути ведет к тем же минусам что и глобальные переменные
то есть ты не можешь с абсолютной уверенностью контролировать состояние между вызовами
конечно если его выставлять на каждый вызов, то вроде минусов и нет
но мы не знаем как изменится в будущем наш класс
возьмем и проглядим в будущем изменение меняющее состояние и надеющееся на это
лучше всегда делать сервисы без состояния вообще
есть такой принцип в DDD


-----
: DDD
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Работа с файловой системой и файлами »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB