【问题标题】:What is the difference b/w Countable and Non Countable Objects可数对象和不可数对象有什么区别
【发布时间】:2019-03-19 19:35:31
【问题描述】:

我正在尝试找出可数对象和不可数对象的区别

首先我发现了对象的类型

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.2,现有对象不可数,我如何将其转换为可数,因为我的代码在 Php 7.0 上运行良好。

【问题讨论】:

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


【解决方案1】:

黑客可能是

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

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

【讨论】:

  • 我们暂时可以通过这种方式重新爱上它。感谢您的宝贵时间
【解决方案2】:

实现接口Countable时,对象为Countable

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

不同之处在于,实现Countable interface 的对象意味着您可以执行count PHP 原生方法,如count() 作为参数传递您的对象,结果是您在实现的方法上定义的值。例如,对于不可数对象,您将收到 警告

【讨论】:

    【解决方案3】:

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

    class YourObject implements Countable 
    {
    
        private $whatYouWantToCount = 0;
    
        public function count() 
        { 
            return $this->whatYouWantToCount; 
        } 
    } 
    

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

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2013-09-19
      • 2011-09-23
      • 2013-06-26
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多