PHP.SU

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

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

> Найдено сообщений: 3
Виктор Отправлено: 11 Мая, 2021 - 19:29:58 • Тема: array_filter • Форум: Вопросы новичков

Ответов: 5
Просмотров: 344
Спасибо за ответ. То что Вы показали я уже показывал в примере 1. Это я понимаю. У меня задача динамически фильтровать. То есть условие фильтрации по нескольким полям массива. И это условие постоянно меняется. То есть нужно что-то похожее на вот это.
PHP:
скопировать код в буфер обмена
  1.  
  2.                 $b = 12; // переменные получаются динамически
  3.                 $c = 13;
  4.                 $d = 50;
  5.                 $e = 65;
  6.                 $f = 1;
  7.                 $g = 10;
  8.                
  9.                 $sport1 = array_filter($get_csv1, function($a) use($b, $c, $d, $e, $f, $g) {return $a[1] >= $b && a[1] <= $c && $a[2] >= $d && $a[2] <= $e && $a[3] >= $f && $a[3] <= $g;});   
  10.  
  11.  

Условия постоянно меняются и не все переменные имеют значения, некоторые иногда - пустая строка.
Вот и хотел сначала условие ($condition) подготовить.
Но никак не могу понять как эту строку передать array_filter Огорчение

Мелкий пишет:
При $b = 12; получаем константу в $condition как результат конкатенации строки с числом.

$string = 'a = 12';
или
$string = 'a = '.$b;
у вас удивления не вызывает? Что в $string окажется строка "a = 12"?
А в чём разница с $string = '$a = '.$b; или $string = '#a = '.$b; ? Никакой разницы. Конкатенация строки и переменной (приводимой к строке).

Могу попробовать угадать, что вы хотите сделать что-то вроде:
PHP:
скопировать код в буфер обмена
  1. $sport1 = array_filter($get_csv1, function($a) use($b) {return $a[1] == $b;});
Виктор Отправлено: 11 Мая, 2021 - 16:43:28 • Тема: array_filter • Форум: Вопросы новичков

Ответов: 5
Просмотров: 344
Почему не существующую &b? Она существует, я опечатался в коде. $b = 12;
(Добавление)
Я опечатался. Там $b = 12; Я никак не могу понять, в первом случае все работает, а если передавать строкой - не работает...
Мелкий пишет:
А почему бы должно работать? Сравниваете несуществующую переменную $b и число 12. Потом присваиваете переменной $condition результат сравнения строки с несуществующей переменной. В этот самым момент условие и вычисляется. Таким образом в array_filter передаёте константное условие и, следовательно, сам array_filter лишний.
Виктор Отправлено: 11 Мая, 2021 - 16:18:30 • Тема: array_filter • Форум: Вопросы новичков

Ответов: 5
Просмотров: 344
Почему так
$sport1 = array_filter($get_csv1, function($a) {return $a[1] == 12;});

работает
а так
$b == 12;
$condition = '$a[1] == '.$b;
$sport1 = array_filter($get_csv1, function($a) use($condition) {return $condition;});

не работает
и как заставить?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB