dポイントプレゼントキャンペーン実施中!

配列から野菜の名前を取得して表示する方法を教えてください。

取得したい野菜の名前の番号はひとつずつ改行で区切って
テキストファイル(*.txt)に保存しています。

例↓
22
484

Array ( [0] => Array ( [no] => 22 [name] => とまと ) [1] => Array ( [no] => 1508 [name] => かぼちゃ ) [2] => Array ( [no] => 5482 [name] => せろり ) [3] => Array ( [no] => 1813 [name] => にんじん ) [4] => Array ( [no] => 54118 [name] => ナス ) [5] => Array ( [no] => 484 [name] => レタス ) )

A 回答 (2件)

何かの課題臭いですが、人が書いたコードを見るのも良い勉強だと思いますのでちょっと書いてみます。



noをキーにして、nameを返す連想配列に変換してから探せば良いと思います。
$data = array ( 0 => array ( 'no' => 22, 'name' => 'とまと',), 1 => array ( 'no' => 1508, 'name' => 'かぼちゃ',), 2 => array ( 'no' => 5482, 'name' => 'せろり',), 3 => array ( 'no' => 1813, 'name' => 'にんじん',), 4 => array ( 'no' => 54118, 'name' => 'ナス',), 5 => array ( 'no' => 484, 'name' => 'レタス',),);

function convert_to_map(&$in) {
$out = array();
foreach ($in as $value) {
$out[$value['no']] = $value['name'];
}
return $out;
}

$vegemap = convert_to_map($data);
$vegenums = array_map(rtrim, file("vegenum.txt"));
foreach ($vegenums as $num) {
if (is_numeric($num)) {
print "$vegemap[$num]\n";
}
}

ここで、vegenum.txtに野菜の名前の番号を入れてあるとします。
    • good
    • 0
この回答へのお礼

課題ではなくて、ただ趣味でPHPをスタートした者です^^;
大変助かりました。まさに理想のスクリプトでした。本当にありがとうございます。
また、PHPで質問させていただくかもしれませんが、そのときはどうぞよろしくお願いします。

お礼日時:2013/03/21 18:34

この配列だとforeachで頭から検索するしかないと思います。



<?php
$file = file('data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$array = array(
array('no'=>22, 'name'=>'とまと'),
array('no'=>1508, 'name'=>'かぼちゃ'),
array('no'=>5482, 'name'=>'せろり'),
array('no'=>1813, 'name'=>'にんじん'),
array('no'=>54118, 'name'=>'ナス'),
array('no'=>484, 'name'=>'レタス'),
);
foreach ($file as $val) {
foreach ($array as $item) {
if ($item['no'] !== intval($val)) { continue; }
print $val . ":" . $item['name'] . "<br />";
break;
}
}

配列が下記のようになっていれば(あるいはこの配列をあらかじめ別に作成するようにすれば)もう少し楽に処理出来ます。

<?php
$file = file('data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$array = array(
22=>'とまと',
1508=>'かぼちゃ',
5482=>'せろり',
1813=>'にんじん',
54116=>'ナス',
484=>'レタス'
);

foreach ($file as $val) {
if (array_key_exists($val, $array)) { print $val . $array[$val] . "<br />"; }
}
    • good
    • 0
この回答へのお礼

ご回答いただいてありがとうございます。
二つもサンプルを作っていただいて、いろいろな方法があるんですね~勉強になりました。PHP初心者ですが、とても分かりやすい説明で助かりました。本当にありがとうございます。

お礼日時:2013/03/21 18:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!