7

gravatar のようなavartacoを実装しようとしていました。

PHPバージョン<5.3で動作させるために

PHP 5.3.0 未満で動作させたい場合は、string を検索します。

array_walk($shape, function(&$coord, $index, $mult) { $coord *= $mult; }, self::SPRITE_SIZE);

ラムダ関数の代わりに create_function() を使用するように書き直します。

同じ行 array_walk.My php version is 5.2.17 <5.3 でエラーが発生Parse error: syntax error, unexpected T_FUNCTIONしていましたが、createfunction による書き換えの意味がわかりません。

PHPバージョン<5.3で動作させるには、その行で何を変更する必要がありますか

プライベート関数 GetShape($type) {

    switch($type) {

        case 'side':

            $shape_id = hexdec(substr($this->_hash, 22, 1)) & (sizeof($this->_shapesSide) - 1);

            $shapes = $this->_shapesSide;
        break;
        case 'center':
            $shape_id = hexdec(substr($this->_hash, 23, 1)) & (sizeof($this->_shapesCenter) - 1);

            $shapes = $this->_shapesCenter;
        break;

        case 'corner':
            $shape_id = hexdec(substr($this->_hash, 24, 1)) & (sizeof($this->_shapesCorner) - 1);

            $shapes = $this->_shapesCorner;
        default:
        break;

    }

    $shape = $shapes[$shape_id];
    
    array_walk($shape, function(&$coord, $index, $mult) { $coord *= $mult; }, self::SPRITE_SIZE);
    return $shape;
    
}
4

3 に答える 3

5

Simply do the following

array_walk(
    $shape,
    create_function(
        '&$coord, $index, $mult',
        '$coord *= $mult;'
    ),
    self::SPRITE_SIZE
);

I have tested avatarico in php < 5.3 and it works!

于 2013-10-09T05:51:02.410 に答える
3

array_walkまたは、PHP 5.3 未満の場合は、この方法でコールバック関数を使用できます。

function array_walk_callback(&$coord, $mult){
   $coord *= $mult;
}

array_walk($shape, 'array_walk_callback', self::SPRITE_SIZE);
于 2013-10-04T03:22:49.030 に答える