- ベストアンサー
PHPのstrcmp関数について
- PHPのstrcmp関数は、文字列をバイナリセーフに比較するための関数です。
- str1がstr2よりも小さければ負の値、大きければ正の値、等しければ0を返します。
- アルファベット順にソートしたい場合には、strcmp関数ではなくsort関数を使うことが一般的です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- strcmp( )関数について教えて下さい
今日は、Cの初心者です、宜しくお願いします。 a,bが一文字のとき、「if(strcmp(a,b)==0)」では、a,bの大小は辞書に出てくる順序を返すとありますが、 a="abcde",b="xyz"として「if(strcmp(a,b)==0)」とかくと、これは文字の長さを比較するのでしょうか。 それとも先頭文字のについて、辞書に出てくる順序の大小を返すのでしょうか。 本を読むと単に「比較する」とだけしか書いてないのですが、一体「文字」又は「文字列」の何を比較するのでしょう。 「辞書に出てくる順序」なのでしょうか、それとも「長さ」なのでしょうか。 一方が文字列(p="xyz")でもう一方が一文字(q)で「if(strcmp(p,q)==0)」のときは何を比較するのでしょうか。 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- toupper関数とstrcmp関数を使った問題
前回答えてくださった方々へのお礼 ・前回質問した際、質問に答えてくださった方々、皆様のおかげで問題を解く事ができました。本当にありがとうございました。 ↓ここから質問です。 「end」と入力されるまで、キーボードから文字列を読み取るプログラムを作成してください。ただし、大文字と小文字が混ざった「EnD」などでも終了するようにしてください。小文字を大文字に変換する「toupper( )関数」を利用してください。また、文字列の比較には「strcmp( )関数」を利用してください。 という問題を解いているのですが、自分でした結果 #include <stdio.h> #include <ctype.h> #include <string.h> int main(void) { char str[10]; ←str[10]は適当に値を決めているだけです int i,ret; int result; do { printf("文字列を入力してください:"); scanf("%s", str); i = 0; while (str[i] != ???? ) // 文字列の最後かチェック { ret = toupper(?); // toupper関数に1つずつ渡す i++; } result = strcmp("END", str); //文字列の比較 if (result == 0) { break; //ループを抜ける! } } while (1); // 条件が1の場合は永久ループ return 0; } ここまではできたのですが、どうしても while (str[i] != ???? ) // 文字列の最後かチェック { ret = toupper(?); // toupper関数に1つずつ渡す i++; } この部分の「?」と書いている部分がわかりませんでした。 わかる方が居られましたらどうか教えてもらえないでしょうか? あと、おかしな部分等がありましたら教えてください。 どうかよろしくお願いします。
- ベストアンサー
- C・C++・C#
- 別階層のPHP関数を使うには?
php_sample ┣html ┃┗index.html ┗php ┗com.php 上記の用にHTMLとPHPをフォルダ毎に分けようと思っているのですが index.htmlからcom.phpの関数を呼ぶにはどうしたらいいのでしょうか? 各ソースは以下の様に記述しております。 ※HTML側 <?php cm_sample("さんぷる"); ?> ※PHP側 function cm_printHtmlHeader($str_tmp) { print "文字列:".$str; }
- 締切済み
- PHP
- if( strcmp( 引数, 引数 )=== 0
サンプルで、 if( strcmp( 第1引数, 第2引数 ) === 0 ){ て書いてあるコードを見たのですが、 この === 0 には、どういう意味があるのでしょうか? (==0とはどう違うのでしょうか? という意味です) 試しに、型の一致を確認できるのかな? と思いやってみたのですが、 うまくいきませんでした。 $a = "10"; $b = 10; if( strcmp( $a, $b ) === 0 ){ print "2つの文字列は同じです!"; } else { print "2つの文字列は違います"; } strrposの返り値判定に「===」を使うのだったら、 意味は分かるのですが、 それとは意味合いが違うような (strcmpに===を使う意味はないような)気もするのですが…
- ベストアンサー
- PHP
- phpエラーについて
おはようございます。 PHPにて掲示板を作成しています。 (全文は文字数制限にて掲載することができなかったため、主要な部分を掲載しております) 一通り作成した後、 ブラウザから参照したところ、 Parse error: parse error, unexpected ';', expecting '{' in /***/***.php on line 44 が出力されました。 line 44行目は「function convstr ( $str );」の行を指します。 この場合、問題となっているのは、 44行目から 57行目の間と考えてよろしいのでしょうか? もし、違っていたとするならば、どこまで追っていけばよろしいのでしょうか? また、errorに対するデバッグ手法がありましたら、 具体的な手法を教えて頂けないでしょうか? 例:printfを*行目にprint()の構文で設置する。 どうぞよろしくお願いします。 42:<?php 43: //タグ無効化等の処理をする関数 44: function convstr ( $str ); 45: { 46: //タグを無効化する 47: $str = htmlspecialchars ( $str ); 48: 49: //「'」「"」を全角に置換する 50: $str = stripslashes ( $str ); 51: $str = ereg_replace ( "'", "’", $str ); 52: $str = ereg_replace ( """, "”", $str ); 53: 54: //文字列内の改行を<br>に変換する 55: $str = ereg_replace ("\r\n|\r|\n", "<br>", $str); 56: return $str; 57: } 58: 59: //DBに接続する 60: $conn = mysql_connect ( "localhost", "root", "mysql" ); 61: if ( $conn == false ) 62: { 63: print ( "DB接続エラーです<br>\n" );
- ベストアンサー
- PHP
- PHPのusort関数について
PHPにおけるusort関数およびuasort uksort関数の使い方がわかりません。 $array = array("b" => "bbbb","c" => "cc","d" => "ddddddddddd","e" => "eee","a" => "a","f" => "ffffffff","g" => "gg","h" => "hh"); 上記のような配列があった場合 uasort($array, function($a,$b){ if (strlen($a) == strlen($b)) { return 0; } if(strlen($a) > strlen($b)){ return -1; }else if(strlen($a) < strlen($b)){ return 1; } } ); print_r($array); 上記のようなコードの場合 ( [d] => ddddddddddd [f] => ffffffff [b] => bbbb [e] => eee [h] => hh [g] => gg [c] => cc [a] => a ) という結果がかえてきます。 ただ、実際このコードでなにがおきてるかわかりません。 まず、uasort関数の第二引数に渡す関数の引数 $a,$bはいったいどんな順番で第一引数の配列からわたされているのでしょうか? そして、$a と$ bの値が同じ場合に0を返した場合なにがおきてるのでしょうか? 同じく return 1;を返すときと return -1;を返すときと いったいどのような処理がおこなわれていてどういうなぜ 上記のような配列を返すことになるのでしょうか? そもそも PHPマニュアルから参照しますが 比較関数は、最初の引数と二番目の引数の比較結果を返します。最初の引数のほうが二番目の引数より大きい場合は正の数を、二番目の引数と等しい場合はゼロを、そして二番目の引数より小さい場合は負の数を返す必要があります。 上記説明も、どうにも理解できません。 どうも全体的にusort関数系の使い方がわかりません。 識者の方よろしくご教授いただけますようお願いします。
- ベストアンサー
- PHP
- HEX2BIN関数の使い方。
HEX2BINを使用して16進数4桁を2進数に変換しようとしたところ=HEX2BIN(B2) (B2セルは6F67)としたところ#NUMエラーが出てしまいます。 B2を”B2”にすれば変換ができたのですが今度はオートフィルが使えなくなってしまいます。 なので、=HEX2BIN(B2)で変換できる方法か””をつかってもオートフィルで=HEX2BIN("C2")などにする方法を教えて下さい Excelは2007です。
- ベストアンサー
- Excel(エクセル)
- phpの関数について質問です!
エクセルのVLOOKUP関数みたいな関数をphpで作れますか? 一定の規則で保存されているテキストデータから値を取り出したいのですが・・・ 例えば、 xxx,2003年度,第3回,大問4,7<br /> zzz,2005年度,第1回,大問2,3<br /> rrr,2004年度,第2回,大問1,12<br /> sss,2006年度,第3回,大問3,2<br /> ddd,2006年度,第3回,大問2,4<br /> yyy,2000年度,第2回,大問2,3<br /> 上記のように保存されているテキストデータから、 xxxを目印に「2003年度,第3回,大問4,7」 という値を取り出せますか?
- ベストアンサー
- PHP