PHP ToString () eşdeğeri

18 Cevap php

Nasıl dize için bir PHP değişkenin değeri dönüştürebilirim?

Ben boş bir dize ile birleştirerek daha iyi bir şey arıyordu:

$myText = $myVar . '';

Java ToString() yöntemi ya. Net gibi.

18 Cevap

Sen kullanabilirsiniz casting operators:

$myText = (string)$myVar;

Booleans ve null için özel taşıma dahil PHP kılavuzun Strings section, dize döküm ve dönüşüm için daha fazla ayrıntı vardır.

Kullanın:

$myText = print_r($myVar,true);

Ayrıca gibi kullanabilirsiniz

$myText = print_r($myVar,true)."foo bar";

Ya isleminden kullanabilirsiniz:

$var = (string)$varname;

veya StringValue:

$var = strval($varname);

veya setType:

$success = settype($varname, 'string');
// $varname itself becomes a string

Onlar tüm Tip-Dönüşümü açısından aynı şey için çalışır.

How do I convert the value of a PHP variable to string?

Bir değer (string) cast veya strval() işlevini kullanarak bir dize dönüştürülebilir. (Edit: Thomas da belirtildiği gibi).

Bir dize olarak kullandığınız zaman o da sizin için otomatik döküm olmalıdır.

Ilkel sadece (string)$var kullanmayın veya hemen bu değişkeni yazdırmak için. PHP dinamik bir dil yazılır ve değişken anında dize döküm olacaktır.

Eğer dizelere nesneleri dönüştürmek isterseniz dize döndürür __toString() yöntemi tanımlamak gerekir. Bu yöntem, istisnalar atmak yasaktır.

Bu, size strval için ne arıyor olabilir

dize strval (mixed $ var)

Get the string value of a variable. See the documentation on string for more information on converting to string.

This function performs no formatting on the returned value. If you are looking for a way to format a numeric value as a string, please see sprintf() or number_format().

Thomas G. Mayfield tarafından verilen cevap ek olarak:

Eğer dize döküm kılavuzuna linki takip ederseniz, anlamak oldukça önemlidir özel bir durum var:

PHP __toString() sihirli yöntemi çağrılarak nesne modeline göre döküm protocol takip edecektir, çünkü (string) döküm, değişken $a bir nesne özellikle tercih edilir (eğer böyle bir ikinci örneği $ hangi sınıfında tanımlanır).

PHP benzer bir şey yapar

function castToString($instance) 
{ 
    if (is_object($instance) && method_exists($instance, '__toString')) {
        return call_user_func_array(array($instance, '__toString'));
    }
}

(string) döküm operasyonu PHP5 + programlama kodu daha yapmak için önerilen bir tekniktir Object-Oriented. IMO bu yani kendi özel PHP şekilde Java / C # / vb gibi diğer OOP diller, tasarım benzerliği (fark) güzel bir örneğidir (bu iyi veya değer için heryerde).

Başka bir seçenek settype işlevi yerleşik kullanmaktır:

<?php
$foo = "5bar"; // string
$bar = true;   // boolean

settype($foo, "integer"); // $foo is now 5   (integer)
settype($bar, "string");  // $bar is now "1" (string)
?>

Bu aslında tiplemeleri aksine değişken bir dönüşümü gerçekleştirir ve birden türlerine dönüştürme genel bir yol sağlar.

Çift tırnak koyarak çalışması gerekir:

$myText = "$myVar";

Ben çıktı tamponlama kullanarak bir değişken ({[) (1]}, {[) (0]}) gibi herhangi bir çıkış yakalamak olduğunu belirtmekte yarar olduğunu düşünüyorum:

<?php
ob_start();
var_dump($someVar);
$result = ob_get_clean();
?>

Thanks to: http://stackoverflow.com/a/139491/987864

Çift tırnak çok çalışmak gerekir ... bir dize oluşturmanız gerekir, o zaman 2 boş dizeleri arasında $ Değişkenim arasında döküm STRING değeri INSERT / APPEND gerekir.

Hep döndürür. ToString (dolar) adında bir yöntemi oluşturabilirsiniz

$in . '';  

Tamsayılar veya booleans gibi basit türlerinden başka bir şey dönüştürme ediyorsanız, aksi takdirde PHP sadece böyle dizi, GoogleSniffer olarak (tipini basacaktır, dönüştürmek için çalışıyoruz türü için kendi işlevi / yöntem yazmak gerekiyordu ya Bide).

Chris Fournier "Eğer bir dize gibi kullanabilirsiniz Eğer bir dize olur", dedi gibi pek PHP dinamik, yazılır. Eğer dize biçimi üzerinde daha fazla kontrol için arıyorsanız o printf cevaptır.

Nesneler için, döküm operatörü kullanmak mümkün olmayabilir. Bunun yerine, json_encode() yöntemini kullanın.

Örneğin, hata günlüğüne irade çıktı içeriği aşağıdaki gibidir:

error_log(json_encode($args));

Belgeler, sen de yapabilirsin diyor:

$str = "$foo";

Bu döküm olarak aynı, ama ben daha güzel görünüyor düşünüyorum.

Source:

Dize türü stdClass metinsel parçası dönüştürmek için bu biraz garip ama çalışma yaklaşım deneyin:

$my_std_obj_result = $SomeResponse->return->data; //specific to object/implementation

$my_string_result = implode ((array)$my_std_obj_result); //do conversion