1

私は2次元配列を持っています

$arr = array (
array('x'=>'x1' , 'y'=>'') ,
array('x'=>'x2' , 'y'=>'') 
);

ご覧のとおり、y列は空です

それに何らかの価値を置きたい場合、これは機能しません

foreach($arr as $a )
{
  if($a['x'] == 'x1')
   $a['y'] = 'y1';

  if($a['x'] == 'x2')
   $a['y'] = 'y2';
}

私は2つforのループを使用できることを知っていますが、これを行うための foreach のようなよりクリーンでシンプルな方法があるかどうか疑問に思っていましたか? 私のアプリケーションはすでに froeach ループを使用して配列内の列をチェックしていますが、もう 2 つのループは必要ありません。

4

1 に答える 1

2

問題は、キーの代わりに配列値を使用していることです。次のコードはそれを行います:

<?php
$arr = array (
array('x'=>'x1' , 'y'=>'') ,
array('x'=>'x2' , 'y'=>'') 
);
foreach($arr as $key => $value )
{
  if($arr[$key]['x'] == 'x1')
   $arr[$key]['y'] = 'y1';

  if($arr[$key]['x'] == 'x2')
   $arr[$key]['y'] = 'y2';
}
?>

ご覧のとおり、foreach には $key => $value 表記を使用する必要があります。

于 2012-11-18T15:36:55.377 に答える