PHPで単純な配列を動的に構築しています。
配列を作成するときのキーの順序は次のとおりです (例として)。
- A6
- A1
- C7
- "" (または NULL)
- B3
しかし、 を介して配列を参照するforeach()
と、配列は順序付けされます (""、"A1"、"A6、"B3"、"C7")。
経由で処理するときに配列の元の順序を保持するにはどうすればよいforeach()
ですか?
キーの順序は構築された方法であると想定しましたがforeach()
、順序にインデックスを付けているか、途中でソートされているようです。
助けてくれてありがとう。
コードスニピット
// loop through 3rd set of query results
echo '<pre>'; /*this is here for my debugging*/
while ($row3 = mysql_fetch_array($result)) {
if (empty($teamName[$row3['team']])) {
$teamName[$row3['team']] = $row3['name'];
echo '>'.$row3['team'].'<<br />'; /*this is here for my debugging*/
}
if ($row3['id'] == $_SESSION['authenticated']['id']) $cssStyle = ' myPick';
else $cssStyle = NULL;
$html[$row3['team']] .= '<li class="bcPicks' . $cssStyle . '">';
$html[$row3['team']] .= '<span class="bcPicks_displayName">' . $row3['displayName'] . '</span>';
if (!empty($row3['team'])) {
$html[$row3['team']] .= ' in ';
$html[$row3['team']] .= '<span class="bcPicks_paddingA">' . $row3['games'] . '</span>';
}
else {
$html[$row3['team']] .= '<span class="bcPicks_paddingB"></span>';
}
if ($row3['points'] < 0) $cssStyle = 'negative';
else $cssStyle = 'positive';
$html[$row3['team']] .= '(<span class="bcPicks_' . $cssStyle . '">' . signedNumber($row3['points']) . ' points</span>)';
$html[$row3['team']] .= '</li>';
} // end while() loop through 3rd set of query results
// free-up memory
mysql_free_result($result);
print_r($html);echo '</pre>';var_dump($html);exit; /*this is here for my debugging*/
foreach ($html as $key => $value) {...}
私print_r()
とvar_dump()
両方が、から出てくる注文はforeach()
、それが構築される方法ではないことを示していると言えます。
ここに配列のダンプがあります
>E5<
>E4<
><
Array
(
[] =>
name1(0 points)
[E4] =>
name2 in 5(-2 points)
name3 in 6(-2 points)
name4 in 7(-2 points)
name5 in 7(-2 points)
name6 in 7(-2 points)
name7 in 7(-2 points)
name7 in 7(-2 points)
[E5] =>
name9 in 4(+8 points)
name10 in 7(+8 points)
name11 in 7(+8 points)
)
array(3) { [""]=> string(158) "
name1(0 points)
" ["E4"]=> string(1156) "
name2 in 5(-2 points)
name3 in 6(-2 points)
name4 in 7(-2 points)
name5 in 7(-2 points)
name6 in 7(-2 points)
name7 in 7(-2 points)
name8 in 7(-2 points)
" ["E5"]=> string(495) "
name9 in 4(+8 points)
name10 in 7(+8 points)
name11 in 7(+8 points)
" }
上記では、「E5」、「E4」、および NULL で構築されていることがわかりますが、配列ダンプでは、NULL、「E4」、および「E5」の順序で表示されます