dポイントプレゼントキャンペーン実施中!

以下の文字列検索のプログラムで
foreach($ptr){
foreach($str){

print "<tr><td>{$ptr}</td><td>{$str}</td>";
$mt = preg_match("/". $ptr . "/", $str)
変数&ptrと$strだけの変数で指定したら
Parse error: syntax error, unexpected ')' in C:\xampp\htdocs\YPHPSample\9\Sample9-4.php on line 24エラーが出ました。
なぜ、変数$valueptrと$valuestrにわざわざ変換しないといけない理由は何ですか?
 上記プログラムが単純で分かりやすいのですが?
宜しくお願いします。

<!DOCTYPE html>
<html>
<head>
<title>文字列検索</title>
</head>
<body>

<?php

$ptr = array("Apple", "GoodBye", "Thankyou") ;
$str = array("Hello", "GoodBye", "Thankyou");

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>パターン</th>
<th>文字列</th>
<th>マッチ</th>
</tr>

<?php

foreach($ptr as $valueptr) {
foreach($str as $valuestr) {

print "<tr><td>{$valueptr}</td><td>{$valuestr}</td>";

$mt = preg_match("/". $valueptr . "/", $valuestr)
? "〇": "×";
print "<td>{$mt}</td></tr>\n";

}
}

?>

</table>

</body>
</html>

質問者からの補足コメント

  • うーん・・・

    これは!配列の基礎からじっくり読まないと理解できないみたいですね
    今読んでいます。
    お待ちください。

      補足日時:2018/03/19 06:45
  • うーん・・・

    あっちこっちの配列類の参考書を見ています。
    古い参考書の配列の説明に
    配列とは「タンス」のようなもの
    と書いてありました。
     ちゃんとまだ読んではいないのですが、
    $ptr と$strが、タンスとした場合、$valueptrと$aluestrはタンスの引き出し名となる!?
    そんな感じかな・・・今いところそう考えた方がうまく説明できる。
    多分そうでしょう・・・
    解決とします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/03/22 08:01

A 回答 (1件)

$ptr、$strは配列だからこそforeach()を使ってると思いますが。


foreach()は配列の中身を1つずつ取り出す命令です。
取り出した値を得るのが$valueptr、$valuestrになります。
それが言語仕様です。
どの言語でも、ループ命令によって元の配列変数が変化する言語はありません。
それが実装およびパフォーマンスとして問題があるなら、配列以外の実装を検討すべきでしょう。
この回答への補足あり
    • good
    • 1
この回答へのお礼

ご回答くださいましてありがとうございました。
>ループ命令によって元の配列変数が変化する言語はありません。<
の意味を知れべます。
参考書を再度読み直しています。
しばらくお待ちください。

お礼日時:2018/03/18 06:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!