2017-11-17 4 views
0

私は$ mixed値を受け取る関数を持っています。 印刷できるかどうかを確認し、その値を他の方法で印刷してそのタイプを印刷する必要があります。私は$を印刷しようとすると、変数をチェックする方法はprint/echoを使って印刷できますか?

サンプルは、上記の条件で

  • $オブジェクト
  • $文字列
  • $数

そして、私の機能

function dmp($value) { 
    echo $value ; 
} 

値オブジェクト、キャッチ可能なエラーが発生します。 値を印刷できるかどうかを確認するための方法や組み込み関数はありますか?それとも手動で書き込むのですか?

+0

難しさは、彼らが__toString()メソッドを実装している場合でも、オブジェクトは「echoable」であるかもしれないということですクラス。 –

答えて

2

あなたが好きGETTYPEを使用して変数の型を取得することができます:

<?php 

$data = array(1, 1., NULL, new stdClass, 'foo'); 

foreach ($data as $value) { 
    echo gettype($value), "\n"; 
} 

?> 

上記の例の出力は、そこhttp://php.net/manual/en/function.gettype.php

0

:詳細については

integer 
double 
NULL 
object 
string 

クラスがechoによって印刷可能であるインスタンスであってもよく、クラスによって便利な変換としてメソッド。

次のコードは、これをキャッチしようとしますが、変換が起こる他の状況があるかもしれません...

class test1 { 
    public function __toString() { 
     return "Class test1"; 
    } 
} 

class test2 { 

} 
function dmp ($value) { 
    if (is_object($value) ) { 
     if (method_exists($value, '__toString')) { 
      echo $value; 
     } 
     else { 
      echo "class=".get_class($value); 
     } 
    } 
    else { 
     try { 
      echo $value; 
     } 
     catch (Error $e) { 
      echo gettype($value); 
     } 
    } 
} 

$values = [ "string", 0, new test1(), new test2(), [1,2,3]]; 
foreach ($values as $value) { 
    dmp($value); 
} 
関連する問題