过去一周,我一直在开发一个PHP页面来显示设备的在线内部库存
我面临的问题以及我遇到的问题如下:
我有2个数组,如下所示:
explode()
函数创建的; foreach()
在从MySQL查询询问中收到的$query->result_array()
创建的当我输出两个数组时,看起来像这样:
// 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
)
数组的长度不同:
我的问题是:如何根据第一个阵列上的匹配显示第二个数组的值?
实际上匹配是这样的: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>';
}
}
}
关于如何使这项工作的任何想法?
这令我头疼:(
所有答案都将深表感谢!
我最诚挚的问候, 迈克尔
稍后编辑:
@ Nevermind :我想从2个阵列输出的内容如下:
@ 不要恐慌:正确,“状态”是一个错字!抱歉,
答案 0 :(得分:0)
尝试使用isset()
将第一个数组的值作为第二个数组的键 -
foreach($1st_array as $key){
if(isset($2nd_array[$key])){
echo $key . ": " . $2nd_array[$key]
}
}
答案 1 :(得分:0)
根据您的描述,您希望合并两个数组,将第一个数组的值映射到第二个数组的键。
请尝试以下操作。
<?php
$array1 = Array (
'NAME',
'TAG',
'SERVICE',
'TYPE',
'COMMENT',
'LOCATION'
);
$array2 = $favorite_foods = Array (
'ID'=> 3,
'ID_CAT' => 10,
'NAME' => 'test',
'TAG'=> 123456789,
'SERVICE' => 'PAID',
'TYPE' => 'SIM',
'COMMENT' => 'Needs activation',
'LOCATION' => 'A city',
'STATUS' => 'Available'
);
foreach ($array2 as $key => $value):
//search the value in array, which is the
//key of the array2.
$position = array_search($key, $array1);
if ($position !== false):
echo " $key<br/>";
else:
echo "-NO MATCH-<br/>";
endif;
endforeach;
--Output--
-NO MATCH-
-NO MATCH-
NAME
TAG
SERVICE
TYPE
COMMENT
LOCATION
-NO MATCH-