プロジェクトに取り組んでいて、多次元配列をセッションに割り当てることに挑戦しています。
プロジェクト情報:
企業はサイトでコースを登録/予約することが期待されており、企業は複数のコースを登録でき、各コースについて、企業は候補者の数とそのバイオデータを指定する必要があります。
例:
会社 XYZ がコース A、コース B、およびコース C に登録する場合、各コースについて次のように候補者情報を提供します。
<?php
$all_reg_courses = array
(
$course_id => array(
"candidate_no" => $cand_no,
"all_candidates" => array(
array
(
'cand_name' => 'Alex Holmes',
'cand_email' => 'al@yah.com',
'cand_sex' => 'Male',
'cand_phone' => '070043635690',
'cand_job' => 'IT'
),
array
(
'cand_name' => 'Tilla Reel',
'cand_email' => 'till@yah.com',
'cand_sex' => 'Female',
'cand_phone' => '0700833435690',
'cand_job' => 'HR'
),
array
(
'cand_name' => 'Bill Enya',
'cand_email' => 'bill@yah.com',
'cand_sex' => 'Male',
'cand_phone' => '07008055435690',
'cand_job' => 'Admin'
)
)
),
$course_id => array(
"candidate_no" => $cand_no,
"all_candidates" => array(
array
(
'cand_name' => 'Alan Pole',
'cand_email' => 'al@yah.com',
'cand_sex' => 'Male',
'cand_phone' => '07009973635690',
'cand_job' => 'IT'
),
array
(
'cand_name' => 'Coleen Curtis',
'cand_email' => 'cole@yah.com',
'cand_sex' => 'Female',
'cand_phone' => '5553435690',
'cand_job' => 'HR'
)
)
),
$course_id => array(
"candidate_no" => $cand_no,
"all_candidates" => array(
array
(
'cand_name' => 'Tamia James',
'cand_email' => 'tam@yah.com',
'cand_sex' => 'Female',
'cand_phone' => '7673435690',
'cand_job' => 'HR'
)
)
)
);
?>
さまざまなコースに提供されたこれらのデータと各コースに指名された候補者は、セッションに一時的に保存され、最終的に「XYZ 社」が「最終送信ボタン」をクリックすると、最終的にデータベースに送信されます。そうしないと、セッションのすべてのデータが特定の時間後に破棄されます(つまり、コース予約カートが空になります)
上記の多次元配列のサンプルをセッションに割り当てようとしましたが、うまくいきません。
エラー メッセージが表示されます: 文字列オフセットは使用できません。
配列をセッションに追加するコードは次のとおりです。
<?php
session_name("cand_cart");
session_start();
$c_id = $_POST['c_id'];
//$cand_no = $_POST['cand_no'];
$_SESSION['cand_cart']['c_id']['cands'] = array();
$_SESSION['cand_cart']['c_id'] = array();
$_SESSION['cand_cart']['c_id']['cand_no'] = array();
$_SESSION['cand_cart']['c_id']['cand_no'] = $_POST['cand_no'];
$_SESSION['cand_cart']['c_id'] = $_POST['c_id'];
//$candidates = array();
foreach ($_POST['candidate'] as $i => $can)
{
$candidates[$i] = array();
foreach ($can as $key => $value)
{
//$candidates[$i][$key] = $value;
$_SESSION['cand_cart']['c_id']['cands'][$i][$key] = $value;
}
}
echo '<pre>';
//var_dump($candidates);
print_r($_SESSION['cand_cart']);
echo '</pre>';
echo "<br><br>";
?>
<table border="1" cellspacing="0" cellpadding="6">
<thead>
<th>#</th>
<th>Name</th>
<th>Phone</th>
<th>Email</th>
<th>Sex</th>
<th>Position</th>
</thead>
<tbody>
<?php
foreach ($_SESSION['cand_cart'] as $i => $can)
{
$c = (object) $can;
$sn = $i + 1;
echo '<tr><td>' . $sn . '</td><td>' . $c->name . '</td><td>' . $c->phone . '</td><td>' . $c->email . '</td><td>' . $c->sex . '</td><td>' . $c->pos . '</td></tr>';
}
?>
</tbody>
</table>
これを手伝ってくれてとても感謝しています..ありがとう!