配列から野菜の名前を取得して表示する方法を教えてください。
取得したい野菜の名前の番号はひとつずつ改行で区切って
テキストファイル(*.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] => レタス ) )
No.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に野菜の名前の番号を入れてあるとします。
課題ではなくて、ただ趣味でPHPをスタートした者です^^;
大変助かりました。まさに理想のスクリプトでした。本当にありがとうございます。
また、PHPで質問させていただくかもしれませんが、そのときはどうぞよろしくお願いします。
No.1
- 回答日時:
この配列だと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 />"; }
}
ご回答いただいてありがとうございます。
二つもサンプルを作っていただいて、いろいろな方法があるんですね~勉強になりました。PHP初心者ですが、とても分かりやすい説明で助かりました。本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php で1から100までの素数の表...
-
PHPでCSVを出力するさいに、ル...
-
再帰関数を用いて配列の合計を...
-
mb_encode_numericentityでタグ...
-
c言語 単位行列
-
XMLとの連携でノードの長さを取...
-
aaa.csvとbbb.csvを条件で抽出...
-
STLのvectorで作った配列をメン...
-
構造体を動的に確保&解放
-
配列の初期化
-
[0];[1];ですが、配列の要素か...
-
class内部でarray_mapをつかう...
-
配列の空要素を特定の文字に置...
-
助けてください!九星気学のP...
-
PHPとMySQLで100万件のデータを...
-
C言語の2次元配列における行・...
-
Perlで重複行を削除したい
-
特定の文からメールアドレスの...
-
PHPにてクラスを配列にすること...
-
Smartyの自作プラグインで配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
特定の文からメールアドレスの...
-
CArrayの要素としてCStringArra...
-
C言語 最大値と最小値を求めて...
-
行列
-
読み(あ行~わ行)ごとに分け...
-
配列の要素(value)に、変数を...
-
C言語の配列をPush(追加)する...
-
STLのvectorで作った配列をメン...
-
php で1から100までの素数の表...
-
【PHP】配列のキー名の修正は可...
-
Perlで重複行を削除したい
-
fgetc関数について
-
CArrayのソート
-
ファイルの書き込みについて教...
-
配列の添え字が小数だとどうなる?
-
PHPのmin関数、「1」以上の数値...
-
forとかで連番の変数を一気に格...
-
delphi 2次元配列がわかりません
おすすめ情報