PHP関数 備忘録:PHP7に変更後に何故か変数が最初の1文字しか取得しない:DW230
「PHP7に変更後に何故か変数が最初の1文字しか取得しない」
PHP5からPHP7に変更後に何故か変数が最初の1文字しか取得しない
PHP5のころまでは以下の数式で「color:#ff0000;」を取得していました ---------------------------------------------------------------------- $col01 = ""; $ar = array("1","2","3","4","5","6","7","8","9","10"); $rd_keys = array_rand($ar, 7); $col01[$ar[$rd_keys[0]]] = 'color:#ff0000;'; $col01[$ar[$rd_keys[1]]] = 'color:#ff0000;'; $col01[$ar[$rd_keys[2]]] = 'color:#ff0000;'; $col01[$ar[$rd_keys[3]]] = "color:#ff0000;"; $col01[$ar[$rd_keys[4]]] = "color:#ff0000;"; $col01[$ar[$rd_keys[5]]] = "color:#ff0000;"; $col01[$ar[$rd_keys[6]]] = "color:#ff0000;"; echo $col01[01]; ---------------------------------------------------------------------- このままPHP7にすると「c」と最初の1文字しか取得しません なぜ???? どこがいけないかまったくわかりません 順に内側から echo $rd_keys[0]; echo $ar[$rd_keys[0]]; 問題ありません 直に指定してみる echo $col01[1]; 結果:c $col01 = ""; をコメントアウトします //$col01 = ""; echo $col01[1]; 結果:color:#ff0000; ---------------------------------------------------------------------- //$col01 = ""; ←これがいけなかったらしい $ar = array("1","2","3","4","5","6","7","8","9","10"); $rd_keys = array_rand($ar, 7); $col01[$ar[$rd_keys[0]]] = 'color:#ff0000;'; $col01[$ar[$rd_keys[1]]] = 'color:#ff0000;'; $col01[$ar[$rd_keys[2]]] = 'color:#ff0000;'; $col01[$ar[$rd_keys[3]]] = "color:#ff0000;"; $col01[$ar[$rd_keys[4]]] = "color:#ff0000;"; $col01[$ar[$rd_keys[5]]] = "color:#ff0000;"; $col01[$ar[$rd_keys[6]]] = "color:#ff0000;"; echo $col01[01]; ---------------------------------------------------------------------- PHP4だったころか $comment = $_POST['comment']; echo $comment; とするとPOSTの値が無い場合「$commentの値がありません」的なエラーになりました $comment = ""; $comment = $_POST['comment']; echo $comment; 先に「$comment = "";」で定義してあげる必要がありました そのころからなんとなく変数を使う場合 先に「$comment = "";」と入れていました が PHP7では「$comment = "";」があると最初の1文字しか取得しません なぜ? ---------------------------------------------------------------------- 例1)普通に変数を定義 $kudamono = ""; $kudamono = "Apple"; echo $kudamono; 結果:PHP7:Apple PHP5:Apple ---------------------------------------------------------------------- 例2)先に空白で変数を定義した後角括弧[]付きで変数を定義 $kudamono = ""; $kudamono[3] = "Apple"; echo $kudamono[3]; 結果:PHP7:A PHP5:Apple ---------------------------------------------------------------------- 例3)角括弧[]付きで変数を定義 $kudamono = ""; $kudamono[3] = "Apple"; echo $kudamono; 結果:PHP7:A PHP5:Array ---------------------------------------------------------------------- 例4)例2から空白で変数を定義を削除 //$kudamono = ""; $kudamono[3] = "Apple"; echo $kudamono[3]; 結果:PHP7:Apple PHP5:Apple ---------------------------------------------------------------------- この結果をどう説明したらいいかわかりません 結果:「変数が最初の1文字しか取得しない」というのは 例2の状況で最初の1文字しか取得していなかったようです 例4のように空白で変数を定義を削除したらエラーがなくなりました 以上 |
|
TOPへ | ||
・用途 | 使用例 | 使用関数 |
・「平成」を新元号「令和」に変更 | 令和7年4月2日 2:03:13 | gmt() gmdate() if() time() |
・ランダムパスワード生成(数字) | PASS:8508 | array_rand() if() for |
・ランダムパスワード生成(英数字混在) | PASS:ER8Z5Na36 | array_rand() if() array() 他 |
・フッター用タイムスタンプ | 2025/04/02 02:03:13 | time() gmdate() |
・日数のカウントダウン | time() strtotime() ceil() | |
・転送と条件付き転送 | header() if() $_SERVER[] | |
・URLエンコード/デコード | urlencode() urldecode() | |
・トーナメント表を作る | if() echo() isset() | |
・error: Invalid numeric literal in line *** | ||
・PHP7に変更後に変数が最初の1文字しか取得しない |