11

配列を 2 回ループする必要があります。1 回目は値を変更するため、もう 1 回はコンテンツを html に表示するためです。残念ながら、私は困っています。この問題を説明するためのテスト シナリオを作成しました。

$cases = array(
  array('caseStyle' => 'case style 1', 'caseNum' => 'case01'),
  array('caseStyle' => 'case style 2', 'caseNum' => 'case02'),
  array('caseStyle' => 'case style 3', 'caseNum' => 'case03'),
  array('caseStyle' => 'case style 4', 'caseNum' => 'case04'),
  array('caseStyle' => 'case style 5', 'caseNum' => 'case05'),
  array('caseStyle' => 'case style 6', 'caseNum' => 'case06')
);

foreach ($cases as $k => &$v) {
    $v['caseNum'] = ucwords($v['caseNum']);
}

foreach ($cases as $k => $v) {
    echo $v['caseNum'] . ' - ' . $v['caseStyle'] . '<br/>';
}

これは以下を出力します:

Case01 - case style 1
Case02 - case style 2
Case03 - case style 3
Case04 - case style 4
Case05 - case style 5
Case05 - case style 5

最後の項目の値が間違っていることに注意してください。

2回目の反復中に foreach($cases as $k => $d)代わりに使用するforeach($cases as $k => $v)$v、2回目の反復の前に設定を解除すると、(unset($v))すべてうまくいきます。これは興味深い。私は何が欠けていますか?

4

3 に答える 3

0

これがあなたの解決策であることを教えてください:

foreach ($cases as $k => &$v){
    foreach($v as &$value){ $value = ucwords($value); }
echo $v['caseNum'] . ' - ' . $v['caseStyle'] . '<br/>';
}
于 2013-09-07T04:15:32.830 に答える