php array_walk函数在循环中随机调用多个函数

时间:2015-07-20 19:03:02

标签: php

我在脚本中使用array_walk,我可以调用一个特定的函数;现在,我想从类似函数池中随机调用一个函数并操纵数组值。它可以是一个循环结构。更具体地说,它们都是图像功能,动态生成图像。另一个要求是我需要以特定顺序将图像保存在诸如001.jpg,002.jpg,003.jpg等文件夹中。目前,我正在使用代码imagejpeg($im, "savedimages/" . time() . "-" . rand() . ".jpg", 90);保存图像。当我随机调用函数时,是否可以在保存图像时保持类似的顺序。我需要一个想法如何做到这一点。

$fontFace = 'AmsiPro-Ultra.ttf';
$sentences = preg_split('/(?<=[.?!])\s+(?=[a-z])/i', $html);

array_walk($sentences, 'dynamicImage', $fontFace);



function dynamicImage($sentence, $key, $fontFace)
{
    $img     = 'green.jpg';
    $client  = new Client;
    $image   = $client->loadJpeg($img);
    $palette = $image->extract();

    imagickResize($img);

    // create a transparent base image that we will merge the square image into.
    $img = new Img();
    $img->create(640, 720, true);

    // first image; merge with base.
    $img2 = new Img('small_square_img.jpg');
    $img->merge($img2);
    $img->save();

    $color = 'D2F57D';
    pngcolorizealpha('second_img.png', $color);


    stringFunction($sentence, $palette[0], $fontFace); 

    $im = mergeImages(array(
    'first.image.jpg',
    'second.image.jpg'
    ));

    # header('Content-type: image/jpg');
    imagejpeg($im, "savedimages/" . time() . "-" . rand() . ".jpg", 90);
    }

1 个答案:

答案 0 :(得分:0)

类似这样的事情

$func_1 = function(){
   echo '1';  
};

$func_2 = function(){
   echo '2';  
};


$functions = array(
       $func_1,
       $func_2,
        ..
);

array_shuffle( $functions );
$functions[1]( );

 foreach( $functions as $index => $function ){
       $function();
  }

在最后一个array_shuffle上,如果我记得右键将重置键,如果没有,你可以使用array_values($ functions)来重置它们。另请注意,我没有对此进行测试,但基本上应该可以使用。