こんばんわ,

現在PHPを学習しています。
たとえば,
$hoge[0]=1;
$hoge[1]=2;
$hoge[2]=3;
$hoge[3]=4;
$hoge[4]=5;
$hoge[5]=6;
$hoge[6]=7;
と配列があり,これをforeachで回していく際に,hogeが5になったときには,次の配列の要素である6を参照したい場合に
foreach($hoge as $val){
if($val == 5){
/* $valの次の要素を見たい */
}
else{
echo $val;
}
}
をどのようにすれば,よろしいでしょうか。foreach文ではだめなのでしょうか。
nextやeachをしようしようとおもったのですが,うまくいきません。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

foreachでは、元の配列の複製を対象に


繰り返し処理が行われます。next(),each()は、
元の配列に対して処理を行うので、ポインタが
異なります。

#1さんの回答で行うか、

foreach($hoge as $key => $val) {
  if ($val == 5) {
    echo $hoge[$key + 1];
  } else {
    echo $val;
  }
}

として下さい。
    • good
    • 0

#1さんの回答が最善ですが、


どうしてもforeachということで、配列の中身が決まっているんであれば、
if($val==5){
echo $hoge[5];
}
とか・・・
かなり荒業で実用性ないですが、このポイントに限ればありかと。
あと、$count++とかしていってもいいですよね。

それなら最初からfor使えってことですが(笑
    • good
    • 0

foreachではなく、for文を使ってみては?


for($i = 0 ; $i < count($hoge); $i++){
if($i == 5){
echo $hoge[$i+1];
} eles {
echo $hoge[$i];
}
}
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q難関大合格者に質問 英語の伸びる要素って

英語の伸びる要素ってズバリ何ですか?
自分は今年読解力を養成するつもりで単語は基礎の基礎しか入れずパラリーやリーズニングを中心にやってました

しかしダメでした。正直読むのに苦労した部分がセンターでさえもありました
受験英語の中でも英語っていろいろあるじゃないですか(文法や構文など

全部やるのはもちろんですが必ずこれをやっとけば合格に近くなるってものがいくつかあるのではと思ってます。

難関大(特に早慶合格者に
聞きたいのですが英語を安定してのばすには一年間何を集中してやればいいか教えて下さいm(_ _)m

Aベストアンサー

早慶ではないですが、難関大合格者です。

私の場合、自己流ですが、やはり長文を読むための単語力、構文読解能力が大事だと思います。
内容を理解するのに単語力は必須だし、
構文を見抜けないと意味がわかりませんから。

あくまで私の自己流なので、参考までに。

Qprint "{$data[$i][$j]}";の $dataと「直接関係」がある

<!DOCTYPE html>
<html>
<head>
<title>P185 Sample6-15▸ 多次元配列</title>
</head>
<body>

<?php

$data[0][0] = "東京";
$data[0][1] = 32;//$data[0][●]に東京のデータを格納します。
$data[0][2] = 25;
$data[1][0] = "名古屋";
$data[1][1] = 28;//$data[1][●]に名古屋のデータを格納します。
$data[1][2] = 21;
$data[2][0] = "大阪";
$data[2][1] = 27;//$data[2][●]に大阪のデータを格納します。
$data[2][2] = 20;
$data[3][0] = "京都";
$data[3][1] = 26;//$data[3][●]に京都のデータを格納します。
$data[3][2] = 19;
$data[4][0] = "福岡";
$data[4][1] = 27;//$data[4][●]に福岡のデータを格納します。
$data[4][2] = 22;

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>都市名</th>
<th>最高気温</th>
<th>最低気温</th>
</tr>

<?php

for($i=0; $i<count($data); $i++){
print "<tr>";
for($j=0; $j<count($data[0]); $j++){
print "<td>{$data[$i][$j]}</td>";//配列の要素を出力する。
}
print "</tr>\n";
}

?>

</table>

</body>
</html>
以上ですが・・・だんだん難しくなってきました!
 さて
  print "<td>{$data[$i][$j]}</td>";の $dataと「直接関係」があるところは
 1) for($j=0; $j<count($data[0]); $j++){  
 2)$data[0][0] = "東京";~$data[4][2] = 22;
  の1)2)のどちらと「直接関係」があるのでしょうか?
 以上よろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<title>P185 Sample6-15▸ 多次元配列</title>
</head>
<body>

<?php

$data[0][0] = "東京";
$data[0][1] = 32;//$data[0][●]に東京のデータを格納します。
$data[0][2] = 25;
$data[1][0] = "名古屋";
$data[1][1] = 28;//$data[1][●]に名古屋のデータを格納します。
$data[1][2] = 21;
$data[2][0] = "大阪";
$data[2][1] = 27;//$data[2][●]に大阪のデータを格納します。
$data[2][2] = 20;
$data[3][0] = "京都";
$data[3][1] = 26;//$data[3][●]に京都の...続きを読む

Aベストアンサー

> の1)2)のどちらと「直接関係」があるのでしょうか?

No.1さんと同じく質問の意味が理解できません。
わかり易く補足いただいた方が良いかと思います。



”の1)2)のどちらと「関係」があるのでしょうか?” というご質問であれば

”どちらとも関係あります” という回答になります。

Q英語の発音に関して人よりもマイナス要素があります。

英語の発音に関してお聞きしたいことがあります。

私はいつもそうなのですが、喋ると(日本語)声が基本的に裏返ります。

特に低い声を出すとほぼ確実に裏返ります。

「声色が一定じゃない」と言った方が良いかもしれません。

そんな私が英語の発音を良くしようと日々頑張っているのですが、

英語は基本的に低めのトーンで話すためすぐに声が裏返ります。

裏返って発音するとすごく声質が高くなりものすごく変な、下手な発音になります。

声が低めで私みたいに声が裏返る事がない、英語に特に興味ない友人にネイティブが話した英文を真似て発音してもらったら、細かい部分(RとLやMとNのような)の発音はそんなにでしたが、全体的にとてもクリアに聞こえ少なくとも必死に毎日上手くなろうともがき苦しんでいる私よりかは良く、ネイティブに近い発音に聞こえました。

正直ショックでした。

なにかこんな私に良い練習方法と言うのはないでしょうか?

発声練習と言った方が良いかもしれません(日本語でさえ裏返る事があるので)。

回答お待ちしております。

Aベストアンサー

アメリカ人でもビックリしたり、慌てたりすると、声が裏返る人がいますが、それでも、英語をしゃべっています。

ただ、英語でも声が裏返ることは、あまり好ましいことではないので、まず、日本語で、裏返らないような工夫をなさってみたらどうでしょう。それで、日本語で安定した声の出し方が出来るようになったら、それを英語でも活用なさるといいと思います。

キングのスピーチという映画をご覧になりましたか。吃音に悩む王様の物語で、そこにスピーチセラピストが出てきます。ああいう人が日本にいるかどうか、捜してご覧になって、もしいなければ、お考えのように、演劇のサークルで大声を出しながらおなかから声を出すような練習をして、のどを鍛えてみるのもいいかもしれません。

DVDなどで気に入った役者さんやニュースキャスターさんを捜して、その人のまねをするのが、私には効果的でした。耳から入った発音を真似するだけではなくて、口の形を見て、真似をするのが役に立ちました。日本人のように口を縦横に動かすのではなく、イの口をしたまま(横に広げたまま)下唇だけでしゃべっている感じです。

m、p、bを発音する時には上下の唇を閉じます。f、vは下唇を上の歯で押さえるようにします。thは舌を少し出します。rは舌が口の中の後ろのほうに巻き込むようにします。

細かいことですが、気をつけてひとつずつ直してゆくと日本人特有の”Lazy mouth”が直ってゆきます。

いろいろ書きましたが、横に広げた唇のまま話していると、声が裏返ることはないような気がするのですが。。。どうかなぁ。。。ちょっと試してみてください。

健闘を祈ります。

アメリカ人でもビックリしたり、慌てたりすると、声が裏返る人がいますが、それでも、英語をしゃべっています。

ただ、英語でも声が裏返ることは、あまり好ましいことではないので、まず、日本語で、裏返らないような工夫をなさってみたらどうでしょう。それで、日本語で安定した声の出し方が出来るようになったら、それを英語でも活用なさるといいと思います。

キングのスピーチという映画をご覧になりましたか。吃音に悩む王様の物語で、そこにスピーチセラピストが出てきます。ああいう人が日本にいるかどう...続きを読む

Q$a[0]='w';$a[1]='r';を1回で

$a=array();
$a[0]='w';
$a[1]='r';
2行目と3行目を$a=はてな('w','r');
のように書くことはできませんか?

Aベストアンサー

こんにちは。

$a = array ( 'w', 'r' );

でいけると思いますが。

http://fol.axisz.jp/php/man/php/function.array.html

Q英語リスニングup だけではなく意外な他の要素もあるDVD

リスニングupの為にDVDを借りていますが、勉強と同時
に楽しくやりたいとも考えています。私としてはサスペン
スが好きなのですが、サスペンスの中にも笑えるシーンも
あるとか(ヒッチッコク劇場のように怖い中にもおかしさ
がある)、社会派の映画だけど good figure の女性が
登場するシーンもあるとか、○×だけど○×以外の要素も
あると、あなたが思う洋画を知っていたら教えてください

Aベストアンサー

オードリー・ヘップバーン主演の「シャレード」はサスペンスの中にも何かユーモアがあって、とても面白かったですね。ケイリー・グラントも好い人なんだか悪い人なんだか最後まで判らずドキドキ。全体的にヒッチコックっぽい感じ+コミカル+ロマンス+オシャレと盛り沢山で、とてもお得感がある映画だと思います。

Q英語の文法で、文の要素の補語について

 補語についてちょっと疑問に思うことがあるので教えていただきたいのです。
 文法書では補語になるのは名詞・代名詞・形容詞、あるいはそれに相当する語・区・節であるとありますが、たとえば次のような文では原型不定詞が補語になっていると思いますが、この説明をしていただけるとありがたいのですが。よろしくお願いします。

 They made me sit down again.

Aベストアンサー

不定詞は動詞ですが,to 不定詞に名詞的用法・形容詞的用法・副詞的用法があるように,
名詞・形容詞・副詞と同じ役割を果たしています。

不定詞や動名詞・分詞は,本来の動詞が述語動詞と言われるのに対して,準動詞と言われます。
半分動詞の要素が残っていますが,半分は別の品詞になっている。

だから,名詞や形容詞と同じように補語になれます。
原形不定詞も to 不定詞も to かあるかないかで同じです。

原形だと,現在形と区別がつかず,述語動詞っぽいですが,原形という時点で
普通の述語動詞とは違います。

make/let/have/see/hear/feel など一部の動詞では
+O+原形となる。
多くの動詞(get/tell/ask/want/expect/force など)では +O+to 原形

もう一つの考え方。
このような原形不定詞は補語などではない。

普通の補語の場合,
He made me happy.
の場合,me = happy, I am happy が成り立つ。

They made me sit down again
では,決して me = sit ではない。
I sit という主述関係が成り立つので,I am happy と同じように考えているだけ。
SVOC なら,be 動詞でつながるはず。

これに対しては再反論として,
I am to sit のように,be to 構文的に be でつなげることができる。

このような made me 原形のような表現は専門的には
不定詞付き対格などと言われ,SVOC と考える立場だけではありません。

me sit ... でセットで O という考えが専門的には主流かもしれませんが,
受験英語的には SVOC とする立場が優勢だと思います。
実際には,文型とか,原形が補語だとか,あまり考えない方がいいです。
make O 原形で「O に~させる」という形とわかるだけでいいです。

不定詞は動詞ですが,to 不定詞に名詞的用法・形容詞的用法・副詞的用法があるように,
名詞・形容詞・副詞と同じ役割を果たしています。

不定詞や動名詞・分詞は,本来の動詞が述語動詞と言われるのに対して,準動詞と言われます。
半分動詞の要素が残っていますが,半分は別の品詞になっている。

だから,名詞や形容詞と同じように補語になれます。
原形不定詞も to 不定詞も to かあるかないかで同じです。

原形だと,現在形と区別がつかず,述語動詞っぽいですが,原形という時点で
普通の述語動詞とは違い...続きを読む

Qforeach($stock as $name => $value){ の$value)で値用の変数

<!DOCTYPE html>
<html>
<head>
<title>P161 Sample6-7 array()を使う</title>
</head>
<body>

<?php

$stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>番号</th>
<th>個数</th>
</tr>

<?php

foreach($stock as $name => $value){
print "<tr><td>{$name}</td><td>{$value}個</td></tr>\n";
}

?>

</table>

</body>
</html>
以上の foreach($stock as $name => $value){ 
 のforeach文は特殊な繰り返し文で$stockは”変数名”・$name"はキー(引出し)用の変数・
 ここまでは何となく意味がわかります。最後のは$valueは”値用の変数”・・とあります。
 ここで言う、”値用の変数”の値とは何のことなのでしょうか? 
 よろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<title>P161 Sample6-7 array()を使う</title>
</head>
<body>

<?php

$stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>番号</th>
<th>個数</th>
</tr>

<?php

foreach($stock as $name => $value){
print "<tr><td>{$name}</td><td>{$value}個</td></tr>\n";
}

?>

</table>

</body>
</html>
以上の foreach($stock as $name => $value){ 
 のfor...続きを読む

Aベストアンサー

$name には、"みかん"、"いちご" など。$valueには、80や60が入ります。

> $stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

の => という記号と対応しているでしょ?

Q英語の質問です

英語の質問です
副詞は文の要素になれないと参考書に書かれていたのですが文の要素とはなんですか?

Aベストアンサー

英語の文には主に5種類の文があります。
これを5文型といい、英語の文で5文型のどれかに分類できない文はありません。

まず、
S:主語、V:動詞、O:目的語、C:補語、M:修飾語
文の要素とは、上のSVOCのどれかです。副詞はMにしかなれません。

そして、5文型を紹介します。

[第1文型]
S+V~:主語+動詞からなる文です。

e.g.1, There is a dog under the table. この文は
    M   V  S   M   
となります。 副詞はSVOCにはなっていませんね?

[第2文型]
S+V+C~:主語+動詞+補語~となります。
見分け方は、S=Cになっているかどうかです。

e.g.2 she is Kumi.「彼女はクミです。」
    S V C
She=Kumiになっていますね?

[第3文型]
S+V+O~:主語+動詞+目的語~となります。
この場合、S≠Oです。

e.g.3 She plays soccer.「彼女はサッカーをします。」
    S V O
彼女はサッカーではないので、Oとなります。

[第4文型]
S+V+O1+O2~:主語+動詞+目的語1+目的語2
見分け方は、O1≠O2

e.g.4 She gave you this present.「彼女はあなたに、プレゼントをあげました。」
    S  V  O   O
「あなた」は「プレゼント」ではないので、O1、O2となり、第5文型にはなりません。

[第5文型]
S+V+O+C~:主語+動詞+目的語+補語
見分け方は、O=Cとなっていることです。

e.g.5 She named this dog Pochi.「彼女はこの犬をポチと名付けた」
    S  V    O   C
イヌ=ポチ なので、O,Cとなります。

このように、文の単語単語のもつ要素(S,V,O,C,M)が文の要素です。
分かりにくいと思いますので、下記を参考にしてください。

http://www.eibunpou.net/01/chapter1/1_2.html

http://www.geocities.jp/catalysttm/grammar.html

高校でみっちり学習するので、中学生の方であれば、さほど気にする必要はありません。
しかし、今のうちに文型を身に着けておくと、後が大分得です。

e.gの文の下に、S,V,O,Cとつけましたが、これを文の構成要素と言い、これを今のうちにつける訓練をしておけば、高校に入ってからも楽ですし、中学校の間でも、実力が上がると思います。

英語の文には主に5種類の文があります。
これを5文型といい、英語の文で5文型のどれかに分類できない文はありません。

まず、
S:主語、V:動詞、O:目的語、C:補語、M:修飾語
文の要素とは、上のSVOCのどれかです。副詞はMにしかなれません。

そして、5文型を紹介します。

[第1文型]
S+V~:主語+動詞からなる文です。

e.g.1, There is a dog under the table. この文は
    M   V  S   M   
となります。 副詞はSVOCにはなっていませんね?

[第2文型]
S+V+C~:主語+動詞+補語~...続きを読む

Q@$a = $b["c"] or $a = "text"; という記述の仕方

これは $a = b["c"] がエラーだったら$aに"text"を代入できるので楽なんですが、
あまり使わない方がいい構文なのでしょうか?

配列の存在チェックをしていて
if(isset($b["c"])){
$a = $b["c"];
}else{
$a = "text";
}
こちらの方がいいのでしょうか?
or の使い方が検索してもイマイチ分からないのです

@はエラーが発生しているのに、それを表示しない方法だと認識しています
だからエラーを出さないのが正しい記述なのであれば、後者が正しいのかと思ったり
1行で収まる上に、一応構文として理解も難しくないので問題ないのかなと思ったり

タイトルの記述方法が不適切なのかどうかと、orの適切な使い方、@はあまり使わない方がいいのかを教えてください
本やネットで検索してみたのですが、どうしてもヒットしません
検索で分かるのでしたら、どのような検索の仕方がいいか教えてください!
お願いします。

Aベストアンサー

@$a = $b["c"] or $a = "text";

if(isset($b["c"])){
$a = $b["c"];
}else{
$a = "text";
}
では$b["c"] = 0の時の動作が違いますね
上の式と同じにするなら
if(isset($b["c"]) and $b["c"]){
または
if(!empty($b["c"])){
になると思います
@は自分も関数の頭に使うことはたまにあります。使わない方がいいとは思いません。

@がないと$b["c"]が未定義の場合にNoticeエラーとなります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング