В чем разница ч / б счетных и не счетных объектов

Я пытаюсь найти разницу ч / б счетного и неисчислимого объекта

Сначала я узнал тип объекта

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.

2

Решение

Взлом может быть

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

Это просто исправление, и я думаю, что оно будет работать только в некоторых случаях, и вы не должны полагаться на него.

1

Другие решения

Объект Countable когда реализует интерфейс Countable,

Этот интерфейс определяет публичный контракт для исчисляемых объектов. Это означает, что как часть контракта подразумевается, что ваш класс должен реализовать метод $object.count(),

Разница в том, что объект, который реализует Countable interface, означает, что вы можете выполнять подсчет PHP нативных методов, таких как count() передавая в качестве параметра ваш объект, имея в результате значение, которое вы определяете для реализованного метода. Например, для неисчислимого объекта вы получите предупреждение.

2

Чтобы сделать объект счетным, он должен реализовать интерфейс countable и есть count метод. То есть

class YourObject implements Countable
{

private $whatYouWantToCount = 0;

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

Источник http://php.net/manual/en/class.countable.php

0
По вопросам рекламы [email protected]