ホームページ  >  記事  >  バックエンド開発  >  このような 2 次元配列には、foreach の後に入力された最後の値しか含まれないのはなぜですか?

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

WBOY
WBOYオリジナル
2016-06-23 14:01:061081ブラウズ

$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 "df250b2156c434f3390392d09b1c9563"; }
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 />';	}}
を学びました。

リーリー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。