2014-09-13 2 views
4

Итак, у меня есть эти функции, мне было интересно, как я могу вызвать две функции случайным образом. Я имею в виду, что php-код будет случайно выбирать из двух? Как мне это сделать?Как вызвать случайную функцию в PHP

Пример Функции

function one() { 
     echo ' 
<div id="two-post"> 
    <a href="<?php the_permalink(); ?>" alt="<?php the_title(); ?>" title="<?php the_title(); ?>"> 
     <?php the_post_thumbnail('dos'); ?> 

     <div class="entry-meta"> 
      <h1><?php the_title(); ?></h1> 
      <p>By <?php the_author(); ?></p> 
     </div> 

     <div class="overlay2"></div> 
    </a> 
</div> 

'; 
    } 

    function two() { 
     echo '<div class="two">' . wp_trim_words(get_the_content(), 50, '') . '</div>'; 
    } 

    function three() { // function names without "-" 
     echo '<div class="third">' . the_author() .'</div>'; 
    } 

код для выбора случайным образом две функции

<?php 

$functions = array('one', 'two', 'three'); // remove the open and close parenthesis() in the strings 

call_user_func($functions[array_rand($functions)]); 

?> 

Код выше не работает. Интересно, может ли кто-нибудь помочь?

+0

Вы не можете иметь имя функции с «-» –

+0

получил эту ошибку: имя Функция должна быть строка в D: \ Xampp \ htdocs \ ... php в строке 12 –

+0

'add_shortcode' принимает две строки, поэтому добавьте' '' 'вокруг вызываемого имени. – Jite

ответ

5

Вы можете назвать это что-то вроде этого:

function one() { 
    echo ' 
     <div id="two-post"> 
      <a href="' . the_permalink() .'" alt="' . the_title() .'" title="' . the_title() .'"> 
       ' . the_post_thumbnail('dos') . ' 

       <div class="entry-meta"> 
        <h1>' . the_title() . '</h1> 
        <p>By ' . the_author() . '</p> 
       </div> 

       <div class="overlay2"></div> 
      </a> 
     </div> 
    '; 
} 

function two() { 
    echo wp_trim_words(get_the_content(), 50, ''); 
} 

function three() { // function names without "-" 
    echo '<div>' . the_author() .'</div>'; 
} 

$functions = array('one', 'two', 'three'); // remove the open and close parenthesis() in the strings 

$functions[array_rand($functions)](); // call it! 

// or 
call_user_func($functions[array_rand($functions)]); 
+0

Спасибо, призрак! Я пробовал ваш код, к сожалению, у меня есть ошибка, расположенная в этой строке: echo ' '; –

+0

вы можете увидеть мою пересмотренную функцию выше. –

+0

no @KareenLagasca удалить PHP в том, что просто эхо его, проверить мою ревизию – Ghost

2

Удалите скобки в массиве с именами функций, как: $a=array("FUNCTION-ONE","FUNCTION-TWO"); и добавить их на вызове: echo $a[$random_keys[0]]() . "<br>";

Кроме того, PHP будет немного раздражен с именами функций, содержащих (функции имени косяк подобных) - характера , поэтому попробуйте переименовать функции на что-то вроде: functionOne (что также больше соответствовало бы стандарту php).

<?php 
$functions = array("functionOne","functionTwo"); 
$function = array_rand($functions); // no second param uses default param which is 1, and will only return one entry. 
echo $functions[$function]() ."<br>"; 
?> 
2

Вы можете использовать переключатель случай здесь ...

function one(){ 
      //some code; 
      } 
function two(){ 
      //some code; 
      } 
function random_caller(){ 
      int x = rand(0,1); 
      switch(x){ 
      case 1: one(); 
      break; 
      case 2: two(); 
      break; 
      default: echo "could not run any function"; 
      break; 
      } 
      } 
2

Попробуйте это:

function one() { echo 'ONE'; } 
function two() { echo 'TWO'; } 
function three() { echo 'THREE'; } 

$functions = array('one', 'two', 'three'); 
call_user_func($functions[array_rand($functions)]); 

Или в функции:

function callRandomFunction($functions) 
{ 
    call_user_func($functions[array_rand($functions)]); 
} 

Вызывается как:

callRandomFunction($functions); 
Смежные вопросы