
こんにちは。
以下のような多次元の配列があるとして…
$test["aa"]["name"] = "名前1";
$test["aa"][mail] = "メール1";
$test["bb"]["name"] = "名前2";
$test["bb"][mail] = "メール2";
$test["cc"]["name"] = "名前3";
$test["cc"][mail] = "メール3";
$test["dd"]["name"] = "名前4";
$test["dd"][mail] = "メール4";
foreach($test as $key => $val){
echo $key;
echo $test[$key]["name"];
echo $test[$key]["mail"];
}
とすると、1番目のキー・名前・メールアドレスのセットが4つ出力されてしまいますが、これに最大出力限度数を指定し、2などに制限したいです。
foreachでループ回数上限を指定する事は可能でしょうか?
また、他にも上記のような処理が可能な方法があれば教えて下さい。
No.2ベストアンサー
- 回答日時:
foreach自身が、『すべて』繰り返しですから、単体では無理ですね。
やるとすれば、カウンタ変数を別に用意してbreak;でループを中断ですかね。
$i=0;
foreach($test as $key => $val){
if (1<$i){//実際には($i=2)でも可
break;
}
$i++;
やりたい処理
}
関係ないけど気になったこと。
echo $test[$key]["name"];
echo $test[$key]["mail"];
普通はこうですね
echo $val["name"];
echo $val["mail"];
お礼が遅くなってすみません。
お返事と指摘ありがとうございます。
間違って覚えていたようです…。
ランダムはDBから取得時にDBにやらせる形で解決し、breakを使う方法を試してみた所、思った通りの動作をしました。
ありがとうございます。
No.4
- 回答日時:
> foreach($test as $key => $val){
> echo $key;
> echo $test[$key]["name"];
> echo $test[$key]["mail"];
> }
上記を下記に変更するだけでも良いかと・・
$keyArray = array_rand($test,2);//2に制限の例
foreach($keyArray as $key){
echo $key;
echo $test[$key]["name"];
echo $test[$key]["mail"];
}
お返事ありがとうございます。
array_rand、使用したことがなかったのですが、試してみた所、大変便利な関数ですね。
新しい知識をありがとうございます。
No.3
- 回答日時:
ANo.1で回答した者です。
お礼メッセージをありがとうございます。ランダムに取り出したいということですので、下記のようになります。
$test["aa"]~["dd"]のキーを別の配列$tmp[]にコピーして、そしてシャッフルします。シャッフルした結果から2つ取り出すようにしています。
--------------------------------
<?php
$test["aa"]["name"] = "名前1";
$test["aa"]["mail"] = "メール1";
$test["bb"]["name"] = "名前2";
$test["bb"]["mail"] = "メール2";
$test["cc"]["name"] = "名前3";
$test["cc"]["mail"] = "メール3";
$test["dd"]["name"] = "名前4";
$test["dd"]["mail"] = "メール4";
$tmp = array(); //シャッフル用の配列
$i = 0;
foreach($test as $key=>$val) {
$tmp[$i] = $key;
$i++;
}
shuffle($tmp);//配列をシャッフル
for ($i = 0; $i < 2; $i++) {
$key = $tmp[$i];
echo $key;
echo $test[$key]["name"];
echo $test[$key]["mail"];
}
?>
お返事ありがとうございます。
お礼が遅くなってすみません、上記コードを参考に自分なり試してみた所、実行出来ました。
今回は#2に記載した方法で解決しましたが、新しい知識が増えました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- Java java final 1 2022/06/10 22:49
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
先頭0で重複のない配列を作りたい
-
PHPの配列の出力について
-
変数に格納された文字列でdefin...
-
規則性があるテキストをグルー...
-
phpでforeachの中にforeachがあ...
-
不要な配列を消したい
-
pythonで辞書データへのアクセ...
-
配列の順番により別の配列を並...
-
関数をの引数について。
-
配列から順位を算出したい
-
2つの配列/キーが一致する際、...
-
phpで$a,$b,を%指定して表示さ...
-
正規表現についての質問
-
データベースに削除機能を追加...
-
配列を利用して表示されるテー...
-
PHP ファイル読み取りについて。
-
助けてください!九星気学のP...
-
すべての変数の値をリセットする
-
2次元配列を1次元配列にするには
-
C言語の配列とポインタについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マッチング処理(1:N)
-
Excel VBAでフィルター後の対象...
-
foreachで上限回数指定方法また...
-
3つの連想配列を交互に代入し...
-
Smartyでインクリメント
-
sqlのデーターを『あ行』『か行...
-
POSTで渡されるデータの数がわ...
-
foerachの中でキーを足したり、...
-
foreachで配列を、左から縦3列...
-
foreachの間にテーブルの<TR>を...
-
リストボックス複数選択抽出方法
-
textより$$にはさまれた文字列...
-
判定の仕方
-
プログラムの改良
-
forを使わずにforeach文のみで...
-
元号の表示
-
Mac トロイの木馬”Flashback"に...
-
pdfファイルの複数添付 引数の型
-
Delphi XEの警告文を消したい
-
Arduino 全部のピンをチェック...
おすすめ情報