• 締切済み

strpos

$city = ($order->delivery['city']); $address = ($order->delivery['street_address']); $cityaddress = ($city+$address); || strpos($cityaddress, '須波') !== false || strpos($cityaddress, '4-13-1') !== false) 上記のようにしましたがうまく行きません。 $cityaddressの代わりに$city $address それぞれだとうまくいくのですが、 $cityaddress = ($city+$address);の書き方が 間違っているのでしょうか?

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

noname#244856
noname#244856
回答No.2

Java出身者の方がハマりやすいのですが、PHPでは以下のような実装になっています。 「+」 ・両オペランドとも配列であれば左オペランドを優先して2つの配列をマージする ・両オペランドともスカラー値またはNULLであれば2つを数値にキャストして足す ・上記に該当しない組み合わせの場合「Fatal Error: Unsupported operand types」が発生する 「.」 ・両オペランドとも文字列にキャストして結合する ・配列を文字列にキャストしたときには「Notice: Array to string conversion」が発生する ・__toStringメソッドを持たないオブジェクトを文字列にキャストしたときには「Catchable Fatal Error: Object of class *** could not be converted to string」が発生する (蛇足) 質問内容と直接関係ないかもしれませんが、ちょっと条件の書き方悪くないですか?私だったら if (  strpos($order->delivery['city'], '須波') !== false ||  strpos($order->delivery['street_address'], '4-13-1') !== false ) {  ... } って書きますねぇ・・・

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>$cityaddress = ($city+$address); 文字列の結合は + ではありません。 RTFM. http://www.php.net/manual/ja/language.operators.string.php $cityaddress = $city . $address; + で書くと、$city及び$addressを「数値として」扱って計算した結果になります(echo $cityaddress; としてみれば一目瞭然です)。

takimoto2014
質問者

お礼

ありがとう御座います

関連するQ&A

  • PS3 北米アカウントを取得するとき、住所のところでつまづきました・・・。

    http://gamelove.livedoor.biz/archives/50810582.html 上記のURLのやり方で試してみたのですが、住所のところでひっかかります。 STREET ADDRESS 1 STREET ADDRESS 2 STREET ADDRESS 3 CITY........... のような項目のところです。 郵便番号 10012(ニューヨーク) 地域 new york ↑のような項目は埋めることが出来ました。 できれば詳しい住所例を教えていただきたいのですが・・・・・・ よろしくお願いします。

  • 条件式の変数化

    phpにて、いくつかのキーワードを変数で設定しておき、 文中にそのキーワードがあるかどうか判定し、そのキーワードによって処理を変えていくというプログラムを作成しています。 プログラムは、strposによるキーワード判定と、switchによる処理を組み合わせたものです。 //【キーワードの設定】 //「暑い」 $atui = "暑い"; $atui2 = "あつい"; $atui3 = "あっつい"; $atui4 = "あつーい"; //「寒い」 $samui = "寒い"; $samui2 = "さむい"; $samui3 = "さっむーい"; $samui4 = "さむーい"; //【判定対象の文章】 $word = "外は暑いなあ" switch (true) { //【「暑い」の場合の処理】 case (strpos($word, $atui1) !== false) || (strpos($word, $atui2) !== false) || (strpos($word, $atui3) !== false) || (strpos($word, $atui4) !== false) || : echo "今日は暑いですね"; break; //【「寒い」の場合の処理】 case (strpos($word, $samui1) !== false) || (strpos($word, $samui2) !== false) || (strpos($word, $samui3) !== false) || (strpos($word, $samui4) !== false) || : echo "今日は寒いですね"; break; } キーワード認識に幅を持たせたいので変数を何個も設定しています。 上記コードのように『暑い』だったら、「あつい」「あっつい」「あつーい」「アツイ」などをそれぞれ個別に変数化し いずれかが含まれていたら「暑い」の処理を実行するという感じです。 キーワードが少ないうちはいいんですが、多くなってくると 個別に設定している変数が膨大になってきて収集がつかなくなってきている状態です。 条件式も、複数のキーワードを組み合わせた判定を書こうとすると、ものすごい長さになってしまいますし… $atui = "暑い" or "あつい" or "あっつい" or "あつーい" or "アツイ"; という感じに、うまく一つのキーワードで一つの変数にまとめることはできないでしょうか? (ちなみに、上記のように書いて条件式に使ってみたのですがうまくいきませんでした…) なにか良い方法がありましたらご助力頂けると幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのユーザーエージェントでの振り分け方法

    phpのユーザーエージェントでの振り分け方法 質問お願いします。 phpのユーザーエージェントでの振り分け方法を調べまして $ua = $_SERVER['HTTP_USER_AGENT']; if ((strpos($ua, 'Android') !== false) && (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'iPhone') !== false) || (strpos($ua, 'Windows Phone') !== false)) { // スマートフォンからアクセスされた場合 header("Location: smartphone/index.html"); exit(); } elseif ((strpos($ua, 'Android') !== false) || (strpos($ua, 'iPad') !== false)) { // タブレットからアクセスされた場合 header("Location: tablet/index.html"); exit(); } elseif ((strpos($ua, 'DoCoMo') !== false) || (strpos($ua, 'KDDI') !== false) || (strpos($ua, 'SoftBank') !== false) || (strpos($ua, 'Vodafone') !== false) || (strpos($ua, 'J-PHONE') !== false)) { // 携帯からアクセスされた場合 header("Location: mobile/index.html"); exit(); } else { // その他(PC)からアクセスされた場合 header("Location: pc/index.html"); exit(); } とコピペで記入してスマホなどを振り分けています。 safari6とsafari7で見た時だけ header("Location: tablet/index.html"); に振り分けたいのですが、どうしたらよいでしょうか? 素人ですいません。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • strposでEmptyのエラーが。引数には何を?

    PHPのプログラムを書いているのですが、以下のエラーが出てしまい困っています。 Warning: strpos() [function.strpos]: Empty delimiter in /xxx/hoge.php on line 22 22行目には以下のコードがあります。 if( strpos( $v['email'] , $record ) !== false ){ $record にはこちらです。 $record = trim( fgets( $r_fp , 1024 ) ); 調べてみますと、strposの$recordの引数が空?のためのエラーではないかという記事があったのですが、この場合には何を入れればよいのでしょうか?引数に何かを定義しないとだめですか? ちなみに、これは重複アドレスを弾く記述を行っている一部となります。 何かアドバイスありましたらお願いいたします。 宜しくお願いします!m(_ _)m

    • ベストアンサー
    • PHP
  • 【PHP】UA判別によるCSSの振り分け

    PHPはドのつく初心者です。 現在PHPでCSSの振り分けに挑戦しています。 私が持っている機種はauガラケーとAndroidだけですので、iPhoneなどの挙動確認はFireFoxのUA変更アドオン「User Agent Switcher」で行っております。 auガラケー実機で以下のPHPは正しく振り分けられていたのですが、FireFoxのアドオンにてDoCoMoのUAでアクセスした場合に、ガラケーのCSSに加えてPC(その他)のCSSが読みこまれてしまいました。 <link rel="stylesheet" type="text/css" href="garak.css" media="all"> <link rel="stylesheet" type="text/css" href="design.css" media="all"> ↑このような感じです。 auのUAアクセスでも同様の症状が発生していますが、こちらはガラケー本体で動作確認できているので大丈夫だとは思います。もしかしたらちゃんと実機で読みこめば行けるのかな?と思いつつ、不安が残っております。 DoCoMo実機は家にないので確認の仕様がありません。 以下のPHPでDoCoMo機種の動作は正しくいくのでしょうか? <?php $ua = $_SERVER['HTTP_USER_AGENT']; if ((strpos($ua,'DoCoMo') !== false) || (strpos($ua,'KDDI') !== false) || (strpos($ua,'UP.Browser') !== false) || (strpos($ua,'J-PHONE') !== false) || (strpos($ua,'Vodafone') !== false) || (strpos($ua,'SoftBank') !== false) ) { echo '<link rel="stylesheet" type="text/css" href="garak.css" media="all">'; } if ((strpos($ua,'iPhone') !== false) || (strpos($ua,'iPod') !== false) || (strpos($ua,'Android') !== false) ) { echo '<link rel="stylesheet" type="text/css" href="smart.css" media="all">'; } else { echo '<link rel="stylesheet" type="text/css" href="design.css" media="all">'; } ?>

  • 「404判定のstrpos」の演算子が分からないの

    「404判定のstrpos」の演算子の意味が分からないので、教えてください。 ▽404 Not Found時の対処 | PHPのQ&amp;A【OKWave】   http://okwave.jp/qa/q4783971.html に掲載されていた下記を試したら、期待した動作になったのですが、 if (strpos($hdr[0],'404')!==false){  echo 'Not Found'; } else { しかし、 ▽PHP: strpos - Manual   http://php.net/manual/ja/function.strpos.php を参考に、「===演算子」へ変更したら、 if (strpos($hdr[0],'404')===false){  echo 'Not Found'; } else { 正常なURL(200)も、全てNot Foundになってしまいます。 ちなみに、 if (strpos($hdr[0],'404')==true){ だったら、期待通りの動作になりますが、 if (strpos($hdr[0],'404')===true){ だと、何が来ても同じ結果になります。 なんででしょうか? strpos関数の返り値を調べる際 ===演算子 を 利用しなくても良いのでしょうか?

    • ベストアンサー
    • PHP
  • スマートフォンサイトとPCサイトの切り替え方法

    PCサイトとスマートフォンサイトをPHPを利用して、振り分けています。 それぞれファイルは別ファイルです。 PC:http://○○○/ スマホ:http://○○○/ip/ yahooやlivedoorのサイトにあるような、PC画面選択ボタン ※こんな感じのやつです。 <a href="~">PCサイト</a> | スマホサイト を付けて、PC画面かスマホ画面を選択出来るようにする具体的な方法を教えて下さい。 現在は下記PHPコードで振り分けています。 <?php $ua=$_SERVER["HTTP_USER_AGENT"]; if((strpos($ua,'iPhone')!==false)||(strpos($ua,'iPod')!==false)||(strpos($ua,'Android')!==false)) { header("Location: http://○○○/ip/"); } ?> よろしくお願い致します。

    • 締切済み
    • PHP
  • 輸出入?物流について

    シッピングオーダー(shipping order) と デリバリーオーダー(delivery order) て違いは何でしょうか? 現在はS/Oを確認し間違いがなかったらB/L発行してもらっています。 変な質問ですがよろしくお願いします。

  • inの使い方について

    以下の分でなぜinが使われているかわかりません。 The actual delivery time for the item(s) in your order どちらかと言えば以下のようにofのような気がするのですが。 The actual delivery time for the item(s) of your order inはtimeにかかっていると思うのですがこれだとニュアンス的に オーダーの中の時間となり違和感があるのですが、 英語ではこれが普通なのでしょうか? The actual delivery time in your order もしそうであれば、どのようなときにこの文法が使われるか教えていただけますでしょうか? よろしくお願いいたします。 全文 You have chosen to ship your order via expedited shipping. The delivery estimate for this method to your address is 2 to 5 business days after shipping. The actual delivery time for the item(s) in your order will depend on the shipping policies of CABOARDZ and when the item(s) are available to ship.

  • eBayでの初期登録の際の入力の仕方

    どなたか教えて下さい。 eBayでの初期登録の際、以下のページが現れるわけですが、 https://scgi.ebay.com/ws/eBayISAPI.dll?RegisterEnterInfo 私の住所は、神奈川県 横浜市 ○○町・・ なんですけれども、 「Street address」の欄までに 横浜市、すなわちyokohama-shi(これで合ってますでしょうか?) を入れてから、 「city」に 神奈川県、すなわちkanagawa-ken(これで合ってますでしょうか?) と入れるのか、 もしくは、 「Street address」の欄までは町名までで、 「city」にyokohama-shi,kanagawa-kenとでも入れるのか、 分かりません。 私の場合のような住所の入力の仕方を教えていただければ幸いです。 お知りの方、どうぞよろしくお願いいたします。

専門家に質問してみよう