我正在从mysql查询中获取多维数组。有点我正在使用以下功能。但是我在里面使用了php eval()函数。
排序:
function array_sorter() {
$sortstring = '';
$sortarray = func_get_arg( 0 );
$count = ( func_num_args() - 1 ) / 2;
foreach ( $sortarray as $key => $row ) :
for ( $i = 1; $i <= $count; $i++ ) {
$str ="\$key" . $i . " = \"" . func_get_arg( $i * 2 - 1 ) . "\";";
$str = $str . "\$array" . $i . "[\$key] = \$row[\$key" . $i . "];";
$str = $str . "\$\$key" . $i . " = \$array" . $i . ";";
@eval( $str );
}
endforeach;
for ( $i = 1; $i <= $count; $i++ ) {
$key1 = func_get_arg( $i * 2 - 1 );
$sortstring = $sortstring . "\$" . $key1 . ", " . func_get_arg( $i * 2 ) . ", ";
}
$sortstring = "array_multisort( " . $sortstring . "\$sortarray );";
eval( $sortstring );
return $sortarray;
}
用法:
$this->tabelle = array_sorter( $table, 'Rank', 0 );
大批:
Array
(
[Club] => Club 1
[Number] => 4
[Win] => 4
[Draw] => 0
[Lost] => 0
[Pos_Points] => 8
[Neg_Points] => 0
[Pos_Goals] => 244
[Neg_Goals] => 194
[Diff_Points] => 8
[Diff_Goals] => 50
[Rank] => 1
)
Array
(
[Club] => Club 2
[Number] => 3
[Win] => 2
[Draw] => 1
[Lost] => 0
[Pos_Points] => 5
[Neg_Points] => 1
[Pos_Goals] => 173
[Neg_Goals] => 163
[Diff_Points] => 4
[Diff_Goals] => 10
[Rank] => 2
)
我是说该函数运行良好,但是我不知道使用eval()函数的安全性。
有没有一种方法可以使它正常工作,而无需使用eval()来降低安全风险并使用最佳实践php编码标准(PHP 7)。