PHP如何使用关联数组输出指定产品,取出products数组中的Tablet
问题分析与修复方案
现有代码的核心问题
- 变量赋值逻辑冗余:你先给
$numbers赋值了1-10的数组,随后直接执行$numbers = $new,而$new是空数组,最终$numbers等于空数组,代码会走到else分支执行。 - 关联数组取值逻辑错误:else分支中你用
foreach遍历$products时,循环变量$product是每个商品的字符串值本身,此时写$product[5]是取该字符串的第6个字符(PHP字符串下标从0开始计数),并不是取$products数组下标为5的值,这就是你输出大量零散单字符的原因。 - 无需遍历数组:你的目标是取固定key为5的值,直接通过关联数组键名取值即可,不需要循环遍历整个数组。
最简实现代码
如果你只是要输出$products里的Tablet,直接按关联数组键取值即可:
<?php $products = [1 => 'Mobile phone', 2 => 'Smart watch', 3 => 'Laptop', 4 => 'Headphones', 5 => 'Tablet']; // 直接通过关联数组的键取值 echo $products[5]; ?>
保留原有分支逻辑的修改方案
如果你需要保留原来的多分支判断逻辑,仅修改else分支的内容即可:
<?php $numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; $new = []; $numbers = $new; $products = [1 => 'Mobile phone', 2 => 'Smart watch', 3 => 'Laptop', 4 => 'Headphones', 5 => 'Tablet']; if ($numbers) { for ($i = 0; $i <= count($numbers); $i++) { echo $i . '<br />'; } } elseif ($numbers !== $new) { for ($i =0; $i <= 100; $i++) { echo $i . '<br />'; } } else { // 删掉原有遍历逻辑,直接按key取值 echo $products[5]; echo '<br />'; } ?>
内容的提问来源于stack exchange,提问作者ama_nnaanna
相关产品推荐
相关产品推荐

