このような 2 次元配列には、foreach の後に入力された最後の値しか含まれないのはなぜですか?

WBOY
リリース: 2016-06-23 14:01:06
オリジナル
1080 人が閲覧しました

$res = array(
array(
'goods_id' => 14,
'goods_number' => 1
),
array(
'goods_id' => 16,
'goods_number' => 1
),
array(
'goods_id' => 18,
'goods_number' => 1
)
);
上記の配列では、goods_id を 14 から 18、つまり 14,15 まで走査したいと考えています。 ,16,17,18 となり、goods_id に対応するグッズ番号が取得されます。グッズ ID が配列内に存在しない場合、グッズ番号には 0 が与えられます。

foreach($res as $value)
{
if($value['goods_id'] == 14)
{
echo $value['goods_number']
echo "
"; }
else
{
echo 0;
echo "
"
}

if($value['goods_id'] == 15)
{
echo $value['goods_number']; }
else
{
echo 0;
echo "
"
}

if($value['goods_id'] == 16)
{
echo $value['goods_number']; }
else
{
echo 0;
echo "
"
}

if($value['goods_id'] == 17)
{
echo $value['goods_number']; }
else
{
echo 0;
echo "
"
}

if($value['goods_id'] == 18)
{
echo $value['goods_number']; }
else
{
echo 0;
echo "
";
}
}
このように foreach を実行できないのはなぜですか?

私が望む結果は次のとおりです:
Goods_id: 14 Goods_number: 1
Goods_id: 15 Goods_number: 0
Goods_id: 16 Goods_number: 1
Goods_id: 17 Goods_number: 0
Goods_id: 18 Goods_number: 1
したがって、エコーの結果は次のようになります。 be
1
0
1
0
1

foreach でこの結果が得られないのはなぜですか?




ディスカッションへの返信 (解決策)

$res = array(	array(		'goods_id' => 14,		'goods_number' => 1		),	array(		'goods_id' => 16,		'goods_number' => 1		),	array(		'goods_id' => 18,		'goods_number' => 1		)	);$newArr = array();foreach ($res as $key => $value) {	$newArr[$value['goods_id']] = $value['goods_number'];}//var_dump(array_values($res));exit;$range = range(14, 18);foreach ($range as $keys => $values) {	if(array_key_exists($values, $newArr)){		echo 'goods_id:'.$values.' 时 goods_number:'.$newArr[$values];		echo '<br />';	}else{			echo 'goods_id:'.$values.' 时 goods_number:0';		echo '<br />';	}}
ログイン後にコピー
ログイン後にコピー


$res = array(	array(		'goods_id' => 14,		'goods_number' => 1		),	array(		'goods_id' => 16,		'goods_number' => 1		),	array(		'goods_id' => 18,		'goods_number' => 1		)	);$newArr = array();foreach ($res as $key => $value) {	$newArr[$value['goods_id']] = $value['goods_number'];}//var_dump(array_values($res));exit;$range = range(14, 18);foreach ($range as $keys => $values) {	if(array_key_exists($values, $newArr)){		echo 'goods_id:'.$values.' 时 goods_number:'.$newArr[$values];		echo '<br />';	}else{			echo 'goods_id:'.$values.' 时 goods_number:0';		echo '<br />';	}}
ログイン後にコピー
ログイン後にコピー
を学びました。

リーリー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!