0

配列の最初の値が<p>タグを追加する理由がわかりませんが、残りはタグ内でうまく機能しliます。

//user posted variable
$checks = $_POST['personalization_result'];


//handling the form data and outputting it into a list
if(!empty($checks)){
$checkValues = array_values($checks);
$checkString = implode('<li style="list-style: none;">'.get_post_meta($post->ID, '_moon_question', true).'', $checkValues);
}  


// I need this filter so it can parse the html in the email
add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));


  //E-mailing my form data here
  $sent = wp_mail($to, $subject, $checkString, $headers);

これは動作し、メールは送信されますが、なぜかこのように表示されます。

<p>1</p> //this is the first value it should look like below
<li style="list-style: none;">Suits1</li>
<li style="list-style: none;">Suits1</li>
<li style="list-style: none;">Suits1</li>
<li style="list-style: none;">Suits0</li>
<li style="list-style: none;">Suits0</li>

問題を特定できればいいのですが、率直に言って、問題がどこにあるのかわかりませんか? implodeHTMLがきちんと書かれていないのではないでしょうか?

4

1 に答える 1

1

Implode指定された配列のすべての出現の間に指定された文字列を追加しています。つまり、提供した出力は、</li>どこにも指定されていないため、指定したスクリプトによって生成されていない可能性があります。

何が返されるか誰も知らないという事実に加えてget_post_meta($post->ID, '_moon_question', true)、リストを生成しようとしている可能性が最も高いですか?

次に、コードは次のようになります。

注: implode は IN BETWEEN のみを追加するため、最初の開始タグと最後の終了タグを区切る必要があります。そのため、「in between string」は終了タグで開始し、開始タグで終了する必要があります。

echo "<li>".implode("</li><li>", $myArray)."</li>"; 
于 2013-08-07T20:06:28.933 に答える