文字列の長さがとれなくて困っています。
プログラムは、以下の通りです。
実行すると、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で質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
findstrのerrorlevel
-
バッチファイルでpingの結果を...
-
switch()文で値の大小比較
-
XMLのタグの有無をPHPで判定し...
-
Dosブロンプトでtabを出力したい
-
syntax error, unexpected 'ech...
-
カレンダーについて教えてくだ...
-
RSSにdiv,ul classを付けたいの...
-
PHP SESSION変数を複数使用でき...
-
実行中の他のアプリのパスの取...
-
php 入力画面から確認表示画面...
-
wordの差し込み印刷で文字...
-
セッションのスコープ(有効範...
-
Yahoo! JAPAN IDを新規取得でき...
-
excel access連携 このテーブル...
-
VB6でDBからクリップボード経由...
-
ps3で久しぶりにCDの音楽情報取...
-
PHPを使って、別サイトの一部を...
-
RSS URL 取得 判定
-
VBS「開いているページ」のURL...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
小数点以下0の非表示
-
バッチファイルで、全てのウィ...
-
オブジェクトの中身の判定(PHP)
-
PHPで訪問回数を表示するカウン...
-
ゼロとNULLを区別して number_f...
-
bashの関数の引数にスペースが...
-
ナベアツプログラム(3の倍数...
-
変数の受け渡しによる画像の表示
-
PHP一覧表示した項目にリンクを...
-
Windowsのsetコマンドでの小数...
-
Parse error というエラーの対...
-
pdftkを使った処理をバッチファ...
-
DBのハッシュ化したパスワード...
おすすめ情報