HOMESEO TOOL >PHP関数 備忘録:PHP7に変更後に何故か変数が最初の1文字しか取得しない:DW230

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へ    
・用途 使用例 使用関数
ランダムパスワード生成(数字) PASS:8480 array_rand() if() for
ランダムパスワード生成(英数字混在) PASS:Neac37h3g array_rand() if() array() 他
フッター用タイムスタンプ 2018/10/22 04:14:26 time() gmdate()
日数のカウントダウン オリンピックまで あと642日 time() strtotime() ceil()
転送と条件付き転送   header() if() $_SERVER[]
URLエンコード/デコード   urlencode() urldecode()
トーナメント表を作る   if() echo() isset()
error: Invalid numeric literal in line ***    
PHP7に変更後に変数が最初の1文字しか取得しない    

Copyright (C) 2001-2018 Digital World Corporation. All Rights Reserved.