Почему так
$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. Виктор - 11 Мая, 2021 - 16:18:30 - перейти к сообщению
2. Мелкий - 11 Мая, 2021 - 16:30:51 - перейти к сообщению
А почему бы должно работать? Сравниваете несуществующую переменную $b и число 12. Потом присваиваете переменной $condition результат сравнения строки с несуществующей переменной. В этот самым момент условие и вычисляется. Таким образом в array_filter передаёте константное условие и, следовательно, сам array_filter лишний.
3. Виктор - 11 Мая, 2021 - 16:43:28 - перейти к сообщению
Почему не существующую &b? Она существует, я опечатался в коде. $b = 12;
(Добавление)
Я опечатался. Там $b = 12; Я никак не могу понять, в первом случае все работает, а если передавать строкой - не работает...
(Добавление)
Я опечатался. Там $b = 12; Я никак не могу понять, в первом случае все работает, а если передавать строкой - не работает...
Мелкий пишет:
А почему бы должно работать? Сравниваете несуществующую переменную $b и число 12. Потом присваиваете переменной $condition результат сравнения строки с несуществующей переменной. В этот самым момент условие и вычисляется. Таким образом в array_filter передаёте константное условие и, следовательно, сам array_filter лишний.
4. Мелкий - 11 Мая, 2021 - 17:41:32 - перейти к сообщению
При $b = 12; получаем константу в $condition как результат конкатенации строки с числом.
$string = 'a = 12';
или
$string = 'a = '.$b;
у вас удивления не вызывает? Что в $string окажется строка "a = 12"?
А в чём разница с $string = '$a = '.$b; или $string = '#a = '.$b; ? Никакой разницы. Конкатенация строки и переменной (приводимой к строке).
Могу попробовать угадать, что вы хотите сделать что-то вроде:
$string = 'a = 12';
или
$string = 'a = '.$b;
у вас удивления не вызывает? Что в $string окажется строка "a = 12"?
А в чём разница с $string = '$a = '.$b; или $string = '#a = '.$b; ? Никакой разницы. Конкатенация строки и переменной (приводимой к строке).
Могу попробовать угадать, что вы хотите сделать что-то вроде: