文字列の長さがとれなくて困っています。
プログラムは、以下の通りです。
実行すると、1の箇所で66になります。
次に値の文字数(2の箇所)を出そうとすると、6と出てしまいます。
見ていると、$sumkey1を変数ではなく文字列として見入るみたいなのですが、
直前に、直接数字を代入するとちゃんとした値がとれます。
どうしたらよいか、わかる方いらしたら教えてください。
<?php
$a= abcde12345678912345678912345678912;
for($h=1; $h<5; $h++){
for($i=0; $i<8; $i++){
if($h == 1){
$sumkey1= $sumkey1 + hexdec(substr($a ,$i,1)) . "<br>";
}else if($h == 2){
$sumkey2= $sumkey2 + hexdec(substr($a ,$i+8,1)) . "<br>";
}else if($h == 3){
$sumkey3= $sumkey3 + hexdec(substr($a ,$i+16,1)) . "<br>";
}else if($h == 4){
$sumkey4= $sumkey4 + hexdec(substr($a ,$i+24,1)) . "<br>";
}
}
}
//最初の8つを16から10進数にして足した値
echo $sumkey1 . "<br>"; //1
//文字列の長さ
echo strlen($sumkey1). "<br>"; //2
//文字列?
echo var_export(is_numeric($sumkey1), true); //3
?>
No.1ベストアンサー
- 回答日時:
<?php
//おちつかないので配列使わせてください。
$sumkey = array();
$a= "abcde12345678912345678912345678912";
for($h=0; $h<6; $h++){ //都合上ここ変更
$sumkey[$h] = 0;
for($i=0; $i<8; $i++){
//phpは
//http://d.hatena.ne.jp/gallu/20061108/p1
//とかいう変態的な挙動をするので途中足される4文字は数値として解釈できないから
//算術演算子+の引数の時に時に無視されて
//普通に計算されているように見えるのです。
//計算結果66(2文字)の最後に文字列リテラルで"<br>"の4文字を足してたら6文字になるよな。
$sumkey[$h]= $sumkey[$h] + hexdec(substr($a ,8 * $h + $i ,1)) ;
}
}
//まぁ別にsprintfしなくてもいいんですけどね。
echo sprintf("%d",$sumkey[0]) . "\n";
echo sprintf("%d",strlen(sprintf("%d",$sumkey[0])));
?>
読みづらくて、すいません。m(__)m
まだ始めたばかりで、構文側がわからなかったのでとりあえずで作っていました。
理解できました。
ありがとうございました。
見えるもの全てではないんですね。
勉強になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
小数点以下0の非表示
-
オブジェクトの中身の判定(PHP)
-
DBのハッシュ化したパスワード...
-
findstrのerrorlevel
-
phpでcookieがうまく保存されない
-
bashの関数の引数にスペースが...
-
バッチファイルで、全てのウィ...
-
Windowsのsetコマンドでの小数...
-
【C#】DataGridViewの最大列数...
-
wordの差し込み印刷で文字...
-
「取得先」という表現について
-
EXCEL、マクロ-改ページ行番号...
-
ps3で久しぶりにCDの音楽情報取...
-
ログインしたら他からログイン...
-
【C#】FindWindowExの使い方を...
-
PHPの名前空間インポートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
バッチファイルでpingの結果を...
-
phpでcookieがうまく保存されない
-
switch()文で値の大小比較
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
ゼロとNULLを区別して number_f...
-
バッチファイルで、全てのウィ...
-
小数点以下0の非表示
-
オブジェクトの中身の判定(PHP)
-
Windowsのsetコマンドでの小数...
-
$_SERVER["REQUEST_METHOD"]に...
-
XMLのタグの有無をPHPで判定し...
-
Parse error というエラーの対...
-
batファイルでPC名称の変更
-
環境変数「%USERPROFILE%」の内...
-
PHPとCSSを使用して九九...
-
hiddenを使っているのに、表が...
-
DBのハッシュ化したパスワード...
おすすめ情報