使用eval()按多个条件对wordpress进行多数组排序

我正在从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)。


qq_遁去的一_1
浏览 130回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP