【发布时间】:2014-12-19 22:47:59
【问题描述】:
在过去的一周里,我一直在开发一个 PHP 页面来显示在线内部设备库存
我面临的问题和卡住的地方如下:
我有2个数组,如下:
- 第一个是在字符串上使用
explode()函数创建的; - 第二个是使用从 MySQL 查询询问收到的
$query->result_array()上的foreach()创建的
当我输出两个数组时,看起来像这样:
// 1st array
Array (
[0] => NAME
[1] => TAG
[2] => SERVICE
[3] => TYPE
[4] => COMMENT
[5] => LOCATION
)
// 2nd array
Array (
[ID] => 3
[ID_CAT] => 10
[NAME] => test
[TAG] => 123456789
[SERVICE] => PAID
[TYPE] => SIM
[COMMENT] => Needs activation
[LOCATION] => A city
[STATUS] => Available
)
数组长度不同:
- 第一个长度为 6
- 第二个长度为 9
我的问题是:如何根据第一个数组上的匹配显示第二个数组的值?
其实匹配是这样的:if (1st array value == 2nd array key) { output }
我尝试了 foreach() 和 for() 循环,但它只会显示 1 个值($i 始终为 0)
这是我尝试过的双 foreach() 循环:
foreach($1st_array as $key1st => $value1st) {
foreach($2nd_array as $values2nd) {
if (strcmp($key1st , $values2nd) == 0) { print '<td>'.$value1st.'</td>'; }
}
}
...这是我尝试过的foreach() 和for() 循环:
foreach($1st_array as $key1st => $value1st) {
for($i = 0; $i < count($2nd_array); $i++) {
if ($key1st == $2nd_array[$i]) {
print '<td id="'.$i.'">'.$value1st.'</td>';
}
}
}
关于如何完成这项工作的任何想法?
这让我头疼:(
所有答案将不胜感激!
我最好的问候, 迈克尔
稍后编辑:
@没关系:我想要的 2 个数组的输出是这样的:
- 名称:“测试”
- 标签:'123456789'
- 服务:“付费”
- 类型:“SIM”
- 评论:“需要激活”
- 位置:“一座城市”
@不要惊慌:正确,“STATUS”是一个错字!对此感到抱歉
【问题讨论】:
-
您的数组 1 和 2 示例的预期输出是什么?
-
foreach($arr1 as $val) if (isset($arr2[$val])) echo $arr2[$val]; -
您是否在数组中添加了逗号?而是,你可以吗?这很难看。
-
我不确定您的预期输出; status 不是第一个数组中的值之一。是错字还是我误解了问题?
-
我已经发布了一个可行的解决方案。我猜你真的不需要第一个数组?