前提・実現したいこと
初投稿です、よろしくお願いします。
PHP(purePHP)にて、Formタグ内にて複数の配列をforeachで回しているのですが、
as以降の変数定義を可変的に実現することが出来ません。(補足情報に詳しく書きます。)
該当のソースコード
php
1 <form action="" method="post"> 2 <input type="submit" value="登録"> 3 <?php foreach(array_map(null, ...$data) as [$v1, $v2, $v3]){ ?> 4 <tr> 5 <td> 6 <?= $v1['date'] ?> 7 </td> 8 <?php for($i = 1; $i <= count($targetSite); $i++){ ?> 9 <td> 10 <input type="text" name="cost[]" value="<?= ${"v" . $i}['cost'] ?>"> 11 </td> 12 <input type="hidden" name="date[]" value="<?= ${"v" . $i}['date'] ?>"> 13 <input type="hidden" name="site_id[]" value="<?= ${"v" . $i}['site_id'] ?>"> 14 <?php } ?> 15 </tr> 16 <?php } ?> 17 </form>
試したこと
[$v1, $v2, $v3]ではなく、list($v1, $v2, $v3)でも問題なく動作するため、
list($v1, ...$v)みたいなことが出来ないか模索してみましたが、私の力では調べ切ることが出来ませんでした。途方に暮れている状態です。
配列の操作の書き方については以下のqiitaの記事を参考にしました。
https://qiita.com/KOH_TA/items/c69b0fce9da1b114fef9
補足情報(FW/ツールのバージョンなど)
バージョンはphp7系です。
【該当のソースコード】の3行目がそれにあたります。
コードでは[$v1, $v2, $v3]となっておりますが、場合によっては、
[$v1, $v2, $v3, $v4]であったり、[$v1, $v2]であったりします。
この配列の長さは、count($targetSite)に依存します。今回記載しているコードでいうと、count($targetSite)は3になります。
また、array_map(null, ...$data)を可変長的に書かないと、array_map(null, $data[0], $data[1], $data[2])となります。
$dataのオブジェクトが3つあるのは、count($targetSite)に依存しています。
回答1件
あなたの回答
tips
プレビュー