質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

11255閲覧

PHP7 eachのエラーについて

masa001

総合スコア9

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/06/17 00:55

前提・実現したいこと

お世話になります。
以前、PHP 5.3.3 で動いていたコードが PHP 7.2 にしたら下記メッセージがでるようになってしまいました。eachは非推奨になったとの事ですが・・・

発生している問題・エラーメッセージ

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /省略/public_html/results.php on line 193

Warning: Variable passed to each() is not an array or object in /省略/public_html/results.php on line 193

該当のソースコード

<?php $filebody = "the $HTTP_POST_VARS array contains "; $filebody .= date("Y/m/d/(D) H:i:s"); $filebody .= "\r\n"; while(list($key,$var) = each($HTTP_POST_VARS)) { $filebody .= "$key , $var"; $filebody .= "\r\n"; } $filebody .= "\r\n"; $fp = fopen("../cgiData/temp.dat","a");

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/06/17 02:30

質問はなんでしょうか?メッセージの抑止?プログラム書き換え?
m.ts10806

2018/06/17 03:07

HTTP_POST_VARS も非推奨のはずですね。もっと前から。
masa001

2018/06/17 05:36

申し訳ございません。コードを修正して警告が出ないようにしたいのです。調べましたら、$HTTP_POST_VARS を$_POSTに修正しました。eachも非推奨とのことで、この部分を修正したいです。
m.ts10806

2018/06/17 05:51

eachの役割を理解されているなら少しマニュアル漁れば書き換え可能な機能はてきそうですけど、そうでもないのでしょうか
m.ts10806

2018/06/17 05:52

問題課題が存在しない、からやりたいことだけ記載した丸投げ 質問にかわっただけのように見受けられます
masa001

2018/06/17 05:55

調べてみます。
guest

回答2

0

ベストアンサー

foreach($_POST as $key => $var)とかいう安易なことではない?

というかpostなんて何がまざるか分かんないし、暗黙にとらないほうがいいと思いますし、5.3のソースを7.2にしてエラーをなんとか回避したい、という状況だったら触らないほうがいい。(それが仕事でももうなかったことにしたほうがいいし、それを教材に勉強しているなら変えたほうがいい)

投稿2018/06/17 11:35

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masa001

2018/06/18 08:03

仰る通りでした。解決しました。ありがとうございました。
guest

0

each — 配列から現在のキーと値のペアを返して、カーソルを進める

警告 この関数は PHP 7.2.0 で 非推奨になります。この関数に頼らないことを強く推奨します。

ってことなので、別の記法あるいは実装方法に切り替えたほうが良いです。
each()の機能は、配列自身が持つポインタを使って、
同じ記述で呼ばれるたびに次のキーと値を返すものです。
(パット見、foreach()ループで置き換え可能なはず。)

それに、PHP7以降の型解釈が厳格になっているので、
array型でもobject型でもないものをeach()に食わせると
Warningになります。

投稿2018/06/18 01:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masa001

2018/06/18 08:03

なるほど、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問