2016-05-07 12 views
0

Ich muss eine zufällige Beschreibung zum Spiel hinzufügen. Spielbeschreibung muss einen Spieltitel wie diesen enthaltenVariable in Array (php)

'1' => 'some text1 (game_title) some text' 

Danach, neue Beschreibung an Datenbank senden. Hier ist mein Code.

 $game_descr = array('1' => 'some text1 (post_title) some text' , 
         '2' => 'some text2 (post_title) some text' , 
         '3' => 'some text3 (post_title) some text' , 
         '4' => 'some text4 (post_title) some text' , 
         '5' => 'some text5 (post_title) some text' , 
         '6' => 'some text6 (post_title) some text' , 
         '7' => 'some text7 (post_title) some text' , 
         '8' => 'some text8 (post_title) some text' , 
         '9' => 'some text9 (post_title) some text' , 
    ); 


    $newtable = $wpdb->get_results("SELECT ID, post_title, post_content FROM wp_posts WHERE post_status = 'publish'"); 
    foreach ($newtable as $gametable) { 
      foreach ($game_descr as $i => $value) { 
       $rand_value = rand(1,9); 
      } 
    echo '<div class="game_descr"><textarea name="game_descr">'.$game_descr[$rand_value].'<br />'.$gametable->post_content.'</textarea></div>'; 
    } 

ich nicht publis Datenbank Aktualisierung Code, becouse es funktioniert) Also, wie Spieltitel der Beschreibung hinzufügen?

+0

Gibt es eine Beziehung zwischen 'post_title' in Ihrem' $ game_descr' und der 'post_title' in Ihrer Anfrage? Soll der Wert aus der Abfrage den Wert im Array ersetzen? – Sean

+0

Warum machst du eine 'foreach()' Schleife - 'foreach ($ game_descr als $ i => $ value)' - innerhalb der 'foreach()' Schleife von deiner Abfrage? Sie überschreiben grundsätzlich $ rand_value 8 Mal und erhalten nur den letzten Wert. Tun Sie einfach den '$ rand_value = rand (1,9);' ohne die 'foreach()', die es einhüllt. – Sean

+0

$ game_descr enthält Vorlagen der Beschreibung. game_title Wert aus der Abfrage ersetzt den Game_title Wert im Array – skit008

Antwort

1

Verwendung sprintf verwenden %s als Platzhalter:

$game_descr = [ 
    1 => 'some text1 (%s) some text', 
    // ... 
]; 

$posts = $wpdb->get_results("SELECT ID, post_title, post_content 
    FROM wp_posts WHERE post_status = 'publish'"); 
foreach ($posts as $p) { 
    $index = mt_rand(1, count($game_descr)); 
    $descr = sprintf($game_descr[$index], $p->post_content); 

    echo <<<EOS 
<div class="game_descr"> 
    <textarea name="game_descr">{$descr}<br/> 
    {$p->post_content} 
    </textarea> 
</div>; 
EOS; 
} 
+0

thx, es funktioniert!) – skit008

+0

Wenn ich ($ s) mehr als 1 Mal verwenden muss, muss ich $ descr = sprintf hinzufügen ($ game_descr [$ index], $ p-> post_content, $ p-> post_content); Recht? – skit008

+0

@ skit008, passen Sie die Formatzeichenfolge entsprechend an, z. B .: 'sprintf ("% s ...% s ", $ eins, $ zwei);' –