Я использую этот Datatables пример, на моем сервере с версией PHP 5.2.
Я знаю, что нельзя использовать анонимные функции, такие как «серверный скрипт» в примере в строке 35, но мне нужно какое-то решение для этого, так как я не могу обновить свой сервер.
Это проблема:
array(
'db' => 'id',
'dt' => 'DT_RowId',
'formatter' => function( $d, $row ) {
// Technically a DOM id cannot start with an integer, so we prefix
// a string. This can also be useful if you have multiple tables
// to ensure that the id is unique with a different prefix
return 'row_'.$d;
}),
У кого-нибудь есть решение для этого function($d, $row)
?
‘Может быть, вы можете использовать array_map:
массив_карт («функция», массив (‘db’ => ‘id’, …)),
затем определите функцию, чтобы сделать то, что вы хотите с элементом ‘formatter’, но оставив все остальные элементы как есть.
Я попытаюсь уточнить, вот предлагаемый код (я предполагаю, что только $ d является целым числом, если нет, то может быть другой распознаватель, который вы могли бы использовать вместо is_int ()):
array_map(
function($val) {$val = is_int($val) ? 'row_'.$d : $val},
array('db' => 'id', 'dt' => 'DT_RowId','formatter' => $d)
)
В зависимости от того, какую версию php вы используете, вам может потребоваться определить неанонимную функцию.
Вот рабочий пример, который должен работать в 5.2:
<?php
$d = 10;
function func($val) {
return is_int($val) ? 'row_'.$val : $val;}
print_r(array_map(
"func",
array('db' => 'id', 'dt' => 'DT_RowId','formatter' => $d)
));
?>
Это выводит:
Array ( [db] => id [dt] => DT_RowId [formatter] => row_10 )
Других решений пока нет …