ホームページ > php教程 > php手册 > PHPのforeachパラメータの強制的な型変換の問題

PHPのforeachパラメータの強制的な型変換の問題

WBOY
リリース: 2016-06-21 08:56:05
オリジナル
1282 人が閲覧しました

そこで、このような情報が表示されないように、foreach を使用する際にパラメータの型変換を強制的に行うようにします。
foreach((array)$arr as $key => $value) ;
こうして順調に進んでいたのですが、数日前に突然問題が発生しました。型をキャストした後、オブジェクト メソッドを通常どおり呼び出すことができなくなります。

コードをコピー コードは次のとおりです:


クラスサービスはIteratorを実装します{
function __construct($service_define,$filter=null){
$this->iterator = new ArrayIterator($service_define['list'] );
$this->filter = $filter;
$this->valid();
関数 current(){
return $this->current_object;
}
public function rewind() {
$this->iterator->rewind();
}
public function key() {
return $this-> ;iterator->current();
}
public function next() {
return $this->iterator->next();
public function valid( ) {
while($this->iterator->valid()){
if($this->filter()){
return true;
}else{
$this->iterator->next();
}
};
return false;
$current = $this ->iterator->current();
if($current){
$this->current_object = new Sameple($current);
戻り値;
}
}
戻り値
}
}
クラス Sameple{
var $class_name = null) {
$this->class_name = $class_name;
}
function show(){
echo $this->class_name,'
'; >}
}
$servicelist = array(
'list' => array(
'最初',
'2 番目',
'3 番目',
' 4 番目',
),
);
$ser = new service($servicelist);
foreach ($ser as $s) {
$s->show();
}
/*
//エラーレポートを実行するコードは、$ser
foreach ((array)$ser as $s) {
$s の強制型変換操作を使用します。 -> ;show();
}*/


この問題の理由は、foreach が配列だけでなく、Iterator インターフェイスを実装するクラスも走査できることです。

以前は配列の状況だけを意識していて、Iterator インターフェースを実装するクラスの状況を無視していました。今後も必ず注目していきます。
順番に覚えてください。




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート