b / w可数对象与不可数对象有什么区别

时间:2018-10-15 11:22:07

标签: php object count php-7.2 php-7.0

我正在尝试找出差异b / w是可数对象和不可数对象

首先,我找到了对象的类型

echo gettype($data["current_fiat_currency"]);

哪个是Object

但是当我检查它是否为可数对象时

var_dump($data["current_fiat_currency"] instanceof Countable );

然后返回

 False

下面是对象内容

var_dump($data["current_fiat_currency"]);

object(stdClass)[2010]
  public 'id' => string '1399' (length=4)
  public 'currency_name' => string 'US Dollar' (length=9)
  public 'currency_slug' => string '' (length=0)
  public 'currency_code' => string 'USD' (length=3)
  public 'currency_logo' => string '0' (length=1)
  public 'currency_type' => string '3' (length=1)
  public 'logo' => string '.png' (length=4)
  public 'exe' => string '0' (length=1)
  public 'logo_exe' => string '1' (length=1)
  public 'symbol_native' => string '$' (length=1)
  public 'symbol' => string '$' (length=1)
  public 'name_plural' => string 'US dollars' (length=10)
  public 'market_cap' => string '0' (length=1)
  public 'circulating_supply' => string '0' (length=1)
  public 'max_supply' => string '0' (length=1)
  public 'total_supply' => string '0' (length=1)
  public 'cryptoid_info_exe' => string '0' (length=1)
  public 'show_on_website' => string '1' (length=1)
  public 'default_selected' => string '1' (length=1)
  public 'exchange_rate' => string '1' (length=1)
  public 'currencies_stats_exe' => string '0' (length=1)
  public 'currencies_stats_last_updated' => null
  public 'mineable_or_not' => string '0' (length=1)
  public 'show_on_top_bar' => string '0' (length=1)
  public 'added_date' => string '2018-01-11 05:21:37' (length=19)
  public 'graph_size_chart_status' => string '0' (length=1)
  public 'twitter' => null
  public 'reddit' => null
  public 'status' => string '1' (length=1)
  public 'for_pair_status' => string '0' (length=1)

因此,如果我根据Php 7.0正常工作,那么如何根据php 7.2将现有对象转换为可计数的方法。

3 个答案:

答案 0 :(得分:2)

在实现接口Countable时,对象是Countable

该接口正在为可数对象定义公共合同。这意味着作为合同的一部分,意味着您的类必须实现方法$object.count()

区别在于,一个实现Countable interface的对象意味着您可以执行诸如count()之类的PHP本机方法作为对象的参数传递,从而获得在该方法上定义的值已实施。例如,对于不可数的对象,您将得到警告

答案 1 :(得分:1)

可能是黑客

echo count((array) $data["current_fiat_currency"]);

这只是一个补丁解决方案,我认为它仅在某些情况下会起作用,您不应依赖它。

答案 2 :(得分:0)

为了使对象可计数,它必须实现接口countable并具有count方法。即

class YourObject implements Countable 
{

    private $whatYouWantToCount = 0;

    public function count() 
    { 
        return $this->whatYouWantToCount; 
    } 
} 

来源http://php.net/manual/en/class.countable.php