forreachで配列の値をとりだす2 メモ

問題

2000円以下の商品を価格が高い方から順に並べ替えて
print_rで出力するプログラムを書いてみましょう。

入力される値

 

ショートソード,1200
ロングソード,2000
ブレードソード,2500
バスタードソード,3000
木の盾,700
銅の盾,1500
鉄の盾,2200

 

<?php
// 標準入力から値をループで取得
while($input = trim(fgets(STDIN))){
// カンマで分割
$key_value = explode(",", $input);
$key = $key_value[0];
$value = $key_value[1];
// 連想配列として$itemに代入
$item[$key] = $value;
}
// ここから下に記述
// 2000円以下の商品を価格が高い方から順に並べ替えて
// print_rで出力するプログラムを書いてみましょう。
foreach($item as $key => $value){
if($value <= 2000){
$item_list[$key] = $value;
}
}
arsort($item_list);
print_r($item_list);


?>

まずforreach文の中に値が2000以下の商品をif文で条件をつける

if文の中の処理を$item_listの配列の中にkeyとvalueを入れていき、ここで2000円以下の

itemを格納

そのあとforeach文の外でarsort()で値をソートし、pirnt_r()で出力

 

期待する出力値

 

Array
(
[ロングソード] => 2000
[銅の盾] => 1500
[ショートソード] => 1200
[木の盾] => 700
)

 

ぶっちゃけとけませんでした。連想配列苦手