人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpでの質問です。

$list = array();
$list[] = array('id' => a, 'product' => 'mikan', 'cost' => '100');
$list[] = array('id' => b, 'product' => 'pork', 'cost' => '200');
$list[] = array('id' => c, 'product' => 'apple', 'cost' => '500');
$list[] = array('id' => d, 'product' => 'chicken', 'cost' => '300');
$list[] = array('id' => e, 'product' => 'beef', 'cost' => '200');

上記のような配列があったとします。
この配列内で例えば
'id' => b, 'product' => 'pork', 'cost' => '200' の行を
'id' => b, 'product' => 'bigpork', 'cost' => '400' に変更し、

'id' => d, 'product' => 'chicken', 'cost' => '300'の行を
'id' => d, 'product' => 'littlechicken', 'cost' => '100'に変更したいと思います。

それぞれ 'id'で行を認識できればと思います。
これを実現するためのコードを教えてください。


●質問者: kou32rr
●カテゴリ:インターネット ウェブ制作
✍キーワード:Apple PHP コード 認識 配列
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● eed
●35ポイント

foreach( $list as $item )

{

if( $item['id'] == 'b' )

{

$item['product'] = 'bigpork';

$item['cost'] '400'

}

if( $item['id'] == 'd' )

{

$item['product'] = 'littlechicken';

$item['cost'] '100'

}

}

◎質問者からの返答

ごもっともな回答ですね。

ありがとうございます。

シンプルでよいです。


2 ● Mook
●50ポイント ベストアンサー

同じ処理を行う場合は、まとめて関数とするとわかりやすくなると思います。

<?php
 $list = array();
 $list[] = array('id' => a, 'product' => 'mikan', 'cost' => '100');
 $list[] = array('id' => b, 'product' => 'pork', 'cost' => '200');
 $list[] = array('id' => c, 'product' => 'apple', 'cost' => '500');
 $list[] = array('id' => d, 'product' => 'chicken', 'cost' => '300');
 $list[] = array('id' => e, 'product' => 'beef', 'cost' => '200');

 print "変更前<BR>\n";
 print_array( $list );
 update_data( $list, 'b', 'bigpork','400' );
 update_data( $list, 'c', 'littlechiken','100' );

 print "変更後<BR>\n";
 print_array( $list );

// 配列表示関数
function print_array( $list ) {
 while(list($key,$value) = each($list)){
 print " id = ".$value['id'].", ";
 print " product = ".$value['product'].", ";
 print " cost = ".$value['cost']."<br>";
 }
 print "<BR>\n";
}

// 配列データ更新関数
function update_data( &$list, $id, $newProduct, $newCost ) {
 for( $i=0 ; $i<count($list) ; $i++ ) {
 if ( $list[$i]['id'] == $id ) {
 $list[$i]['product'] = $newProduct;
 $list[$i]['cost'] = $newCost;
 }
 }
}

なお今回の場合、id がユニークなものであれば、array の中のデータではなく、$list の インデックス

とすることで、処理を簡易化することができると思います。

ご参考までに、インデックスとした例です。

 $list = array();
 $list['a'] = array( 'product' => 'mikan', 'cost' => '100');
 $list['b'] = array( 'product' => 'pork', 'cost' => '200');
 $list['c'] = array( 'product' => 'apple', 'cost' => '500');
 $list['d'] = array( 'product' => 'chicken', 'cost' => '300');
 $list['e'] = array( 'product' => 'beef', 'cost' => '200');

 print "変更前<BR>\n";
 print_array( $list );
 update_data( $list, 'b', 'bigpork','400' );
 update_data( $list, 'c', 'littlechiken','100' );

 print "変更後<BR>\n";
 print_array( $list );

// 配列表示関数
function print_array( $list ) {
 while(list($key,$value) = each($list)){
 print " id = ".$key.", ";
 print " product = ".$value['product'].", ";
 print " cost = ".$value['cost']."<br>";
 }
 print "<BR>\n";
}

// 配列データ更新関数
function update_data( &$list, $id, $newProduct, $newCost ) {
 $list[$id]['product'] = $newProduct;
 $list[$id]['cost'] = $newCost;
}
?>
◎質問者からの返答

勉強になります。ありがたいです。

この使い方がはてなで一番有効に感じています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ