質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

解決済

3回答

1150閲覧

回数未定のループのやり方

panp

総合スコア12

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

0クリップ

投稿2020/10/12 13:55

編集2020/10/12 14:02

前提・実現したいこと

$a==1でループをやめたいが、抜け出せない。

発生している問題・エラーメッセージ

$nisinsuの中身がこの場合なら6こでループを追わせたいが、50までループを続けてしまっている。
array(50) {
[0]=>
int(0)
[1]=>
int(0)
[2]=>
int(1)
[3]=>
int(1)
[4]=>
int(0)
[5]=>
int(1)
[6]=>
int(0)
[7]=>
int(0)

該当のソースコード

$i=0; $a=44; while ($i<50){ $nisinsu[]=$a%2; $a=$a/2; if($a==1){ break; } $i++; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2020/10/12 14:53 編集

phpのバージョンを教えて下さい。 バージョンによって、挙動変わるかもしれません。
guest

回答3

0

ベストアンサー

おそらく、$a=$a/2;じゃなくて$a=intdiv($a,2);がやりたいことでしょう。整数除算。

整数同士の/による除算が整数除算になる言語との混同。

投稿2020/10/12 14:37

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

panp

2020/10/13 06:51

ありがとうございます!おっしゃる通りでした!
guest

0

$a==1の条件で、breakすればいいです

#この場合は$a<=1のほうがいいですね

投稿2020/10/12 13:57

編集2020/10/12 13:58
y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

panp

2020/10/12 14:01

ありがとうございます、途中でbreakはさんでいますが、うまくいきませんでした、、
y_waiwai

2020/10/12 14:36 編集

デバッグできる環境を整えて、そのコードがどういうふうに動作してるのか追いかけていけばどうでしょう よく初心者の方が、コードが動かないと言ってますが、100%勘違いですよ
guest

0

今の構文だと、$a==1になることは絶対にないからです。
44 / 2 = 22
22 / 2 = 11
11 / 2 = 5.5
5.5 / 2 = 2.75
2.75 / 2 = 1.375
1.375 / 2 = 0.6875
...
となるので。

なので、そのままで単純にbreakを通る条件としては、
y_waiwaiさんのおっしゃる通り、
$a <= 1です。
もし上記条件にしても通らない場合、
質問者さんのコピペミスか、別のところで間違っているのかと思います。
(こちらで試したら、breakされました)

投稿2020/10/12 14:43

編集2020/10/12 14:45
miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問