PHP çıktı tamponu soru / sorun istifleme

4 Cevap php

Aşağıdaki Ben ne arzu elde değil

<?
echo ob_start() . "<br>";
echo "1x<br>";
echo ob_start() . "<br>";
echo "2x<br>";
echo ob_flush() . "<br>";
echo "3x<br>";
echo ob_flush() . "<br>";
?>

Çıktısı şudur

1
1x
1
2x
1
3x
1

Ben çizgisinde bir şey isteyen am

1x
3x
2x

Ben sorun onun ilk çıkış tamponunda) (ikinci ob_start çıktısı koyarak olduğunu varsayalım. Ama nasıl benim istenen çıktı alabilirim?

Edit:

Temelde ne elde etmek çalışıyorum çıkışı daha sonraki bir noktada bir HTML belgesinin başında olması gerekiyor etiketi sağlanmasıdır. Yani, zaten o zaman sağlamak için gereken dokümanlar kafa infomation yazdırdıktan sonra komut dosyası aracılığıyla yarım.

4 Cevap

ob_start için PHP kılavuzuna başvurun. Sen istemiyorsun

echo ob_start();

because that function returns true or false, so it will output a 1 or 0 instead

ob_start();
echo "1x" . "<br />";
echo "2x" . "<br />";
echo "3x" . "<br />";
ob_flush();

Genel olarak sizin objektif çok açık değildir. ob_start () gönderilmeden önce çıktı bir demet kadar temizlik için kullanılır. Bu, bir yığın olarak kullanılmamalıdır.

PHP bir yığın kullanmak istiyorsanız SplStack sahipsiniz.

Neden sadece yazmıyorsun

echo "1x"."<br>";
echo "3x"."<br>";
echo "2x"."<br>";

Ne aşağıdaki hakkında:

<?php
echo ob_start();
echo "1x<br>";
$keep_me_1 = ob_get_contents(); /* optional and for later use */
echo ob_flush();

echo ob_start();
echo "3x<br>";
$keep_me_2 = ob_get_contents(); /* optional and for later use  */
echo ob_flush();

echo ob_start();
echo "3x<br>";
$keep_me_3 = ob_get_contents(); /* optional and for later use  */
echo ob_flush();

?>

Eğer "yığın" işlevselliği daha fazla kullanmak istiyorsanız ob_end_flush bir göz atmalısınız.

Bir dize için iç tampon içeriğini kaydetmek için () ob_get_contents kullanabilirsiniz, daha sonra uzak içeriği atmak için () ob_end_clean diyoruz. Daha sonra, dize yazmak için dış tampon bir geri arama işlevini kullanın.