xampp 開発環境で PHP 5.4.7 を使用します。
私のデータ層ファイルには、MySql テーブルからデータを取得する関数があり、後でコンテンツにアクセスできるように 2 次元配列を作成します。print_r を使用して、このデータ層ファイル自体の要素を出力すると、インデックスの正しい順序、つまり 0、1、2、3、4、5 で出力されます。しかし、この関数を別の場所で呼び出して要素を出力すると、 、5、0、1、2、3、4の順番で出てきます。
この切り替えは、関数が作成されてから使用されるまでの間に確実に発生します。あちこち検索しましたが、フォーラムで言及されているようなものは見つかりませんでした。
これは機能です:
function getAllActivitiesAtEvent($eventId)
{
$query = ("SELECT * FROM activity WHERE '$eventId' = activity.event_id");
$result = @mysql_query ( $query ) or die ( mysql_error () );
$num = mysql_num_rows ( $result );
if ($num != 0)
{
$allActs[$num-1] = array();
$i = 0;
while ( $row = mysql_fetch_array ( $result ) )
{
$oneAct = [
"index" => $i,
"actId" => $row ['activity_id'],
"actName" => $row ['activity_name'],
"actSC" => $row ['activity_short_code'],
"actPL" => $row ['project_leader'],
"actCap" => $row ['capacity'],
"actDOW" => $row ['day_of_week'],
"actDate" => $row ['date']
];
$allActs[$i] = $oneAct;
$i++;
}$i = 1;
}
return $allActs;
}
...そして、このページで print_r すると、順序は正しいです。
この関数を別のページで呼び出すと、次のようになります。
dbconnect();
$activityArr = getAllActivitiesAtEvent($eventId);
要素を出力すると、順序が間違っています!