• ベストアンサー

if条件の中に関数を使いたい

お世話になります。 $a $bという項目があり等価かどうかを判断して何かを処理するとき if ($a==$b){} if ($a eq $b){} といった書き方になると思うのですが、a、bそれぞれの先頭の一文字のみを比較したい場合 if (substr($a,1,1) eq substr($b,1,1)){} と書きたいのですが、とおりません。PERLでは こういうことはできないのですか? よろしくお願いします。

  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • t140
  • ベストアンサー率39% (59/150)
回答No.1

substr($x, 0, 1) これでどうでしょう? ※文字列の先頭位置は0です。

cshoaucmoa
質問者

お礼

ありがとうございました。しかし、びっくりです。 ORACLEのSQLにも同じ名前の同じような機能の関数があって、そちらが先頭が1なので、てっきり思い込んでしまいました。思い込みって怖い・・・。

関連するQ&A

  • perlのif文で・・・・・

    こんにちは。 お聞きしたいのですが、perlのif(A eq B)文で、crypt関数で暗号化した文字列の比較をしているのですが、画面に双方の変数をテスト表示をしてみて、AとBは一致しているにもかかわらず、このif文を飛ばしてしまいます。 暗号化した変数を使うのは初めてなんですが、何か可能性として考えられることはありますか? 自分でも考えられるチェックはしたつもりなんでが・・・

  • IF関数の条件に関数を指定

    Excelに関する質問です。 ちょっと分かりづらいのですが、例えばセルA1とB1があるとします。 A1には別シートのセルが参照されています。(「="あ!A1"」など) ここで、B1にはIF関数を入れたいのですが、その時A1の関数式内の文字を条件にしたいのですが、そういうことはできますか? つまり、B1にIF関数で「A1セル内の関数式内に"あ"の文字がある時に"い"と表示する」のようにしたいのです。 普通に「=IF(A1="あ","◯","")」ではできません。 Google先生でも調べてみたのですが、分かりませんでした。 お知恵をいただければ幸いです。

  • 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)」のときは何を比較するのでしょうか。  宜しくお願いします。

  • IF関数に、二つの条件を入れたいです

        A     B      C 1. 100     90     ○ このような場合で、もしA1-B1が1以上の場合のみ、C1に○が出るようにしたいのですが、A1に入力しただけで○が出てきてしまいます・・ B1を入れたときに、初めて○がでるようにしたいのですが、IF関数に条件を いくつか入れられるのでしょうか? この関数式がどうしても、分かりません。よろしくお願いします。

  • 条件式の書き方について

    $aがaかbかcだった場合という条件式を if($a eq a || $a eq b || $a eq c) とせずに if($a eq aまたはbまたはc) というようにまとめて書くことは無理なんでしょうか?

    • ベストアンサー
    • Perl
  • 二つの条件が不等価の場合の記述

    どうも連続でくだらない質問で申し訳ありません(^^; 変数aが不等価、もしくは変数bが不等価の場合の記述はどのようにすればいいのでしょうか。 $aが"あ"ではない場合、もしくは$bが"い"ではない場合に次の処理を実行する、という書き方をしたいのですが if($a!="あ" || $b!="い"){ } ではうまくいきませんでした。 ご教授、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • エクセル2007 IF関数について教えてください

    お世話になります。 どうしてもIF関数がうまくできず困りはてています。 下記のような項目を含むデータを2万件くらい抽出しています。 A列     B列  C列      D列 E列 状況    拒否理由       注文数   確認数 (1) 在庫不足   入力ミス  1     0 → キャンセル (2) 在庫不足       1      0 → 未処理 (3)                 5        0 → 未処理 (4)                 1       1 → 処理済 (5)   お客様キャンセル      10    0     →     キャンセル 未処理の件数を管理したいのですが、キャンセル扱いとなる条件を除く IF関数をうまく作成できません。 =IF(AND(D2>0,E5>0),"完了","未処理") といったように1個の条件についてはなんとかできるのですが、 B列が空欄or文字の入力有、C列が空欄、E列が0の数字の場合、D列の 数字を表示しなさい、といったようにまとめて、条件式をつくることができません。 何個かつなげると、TRUE、FALSEと表示され指定する列の(この場合D列)数字が表示 できません。 IF関数でなくてもよいのですが、未処理(キャンセル扱い除く)条件のみの数字を表示させる 方法をご教示お願いいたします。

  • IF関数に関して教えてください。

    はじめまして IF関数に関しまして、論理式の箇所に文字が入っているかどうかで 真であるか偽であるか求める場合どのようにしたい良いのでしょうか。 たとえば、、、 論理式= A1に文字が入っている 真の場合=A1 偽の場合=”” 作業したい内容としましては、  A1に文字が入っている → A1の文字をB1に反映させる A1に文字が入っていない→ B1は空欄にする。 また、何か他に適切な関数がございましたら 教えていただければ幸いです。 よろしくお願いいたします。

  • 条件分岐(if)について

    条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • SUMIFS関数のOR条件をIF関数で切り替える

    A B 1 S-B 2 S 10 3 A 20 4 B 30 5 C 40 6 D 50 7 E 60 8 集計 0 上記のようなデータテーブルがあり、セルA1はプルダウンで A・S-A・S-B・S-C・S-D・S-Eの6種類変更できます。 集計を出力するセルB8の演算は以下の通りです。 =SUM(SUMIFS(B2:B7,A2:A7,IF(A1="S","S",IF(A1="S-A","{S,A}",IF(A1="S-B","{S,A,B}",IF(A1="S-C","{S,A,B,C}",IF(A1="S-D","{S,A,B,C,D}","{S,A,B,C,D,E}"))))))) この例だと、セルB8の答えには60が欲しいのですが、条件範囲の文字に対し、文字{S,A,B}の比較になる為0となっています。 実際のデータテーブルは他のデータも有り、条件も複数有ります。 質問は、配列でのOR条件として認識される切り替え方法です。 この例では、IFにより範囲を指定したSUM演算を切り替えれば良いのですが、質問部分をフォーカスする為の例としています。 よろしくお願いします。

専門家に質問してみよう