Поэтому у меня есть эти функции, мне было интересно, как я могу вызвать две функции случайным образом. Я имею в виду, что 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)]); ?>
Приведенный выше код не работает. Интересно, может ли кто-нибудь помочь?
Вы можете назвать это примерно так:
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)]);
Вы можете использовать корпус Switch здесь …
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; } }
Удалите круглые скобки в массиве с именами функций, например: $a=array("FUNCTION-ONE","FUNCTION-TWO");
И добавьте их по вызову: echo $a[$random_keys[0]]() . "<br>";
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>"; ?>
Попробуй это:
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);