0

在过去的一周里,我一直在开发一个 PHP 页面来显示在线内部设备库存

我面临的问题以及我遇到的问题如下:

我有2个数组,如下:

  • 第一个是使用explode()字符串上的函数创建的;
  • 第二个是使用foreach()$query->result_array()MySQL 查询询问接收到的

当我输出两个数组时,看起来像这样:

// 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()and循环: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 个数组的输出是这样的:

  • 名称:'测试'
  • 标签:'123456789'
  • 服务:“付费”
  • 类型:“SIM”
  • 评论:“需要激活”
  • 地点:“一座城市”

@ Don't Panic:正确,“STATUS”是一个错字!对于那个很抱歉

4

2 回答 2

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-
于 2014-12-20T00:07:29.063 回答
0

尝试使用isset()第一个数组的值作为第二个数组的键 -

foreach($1st_array as $key){
    if(isset($2nd_array[$key])){
        echo $key . ": " . $2nd_array[$key]
    }
}
于 2014-12-19T23:17:31.800 回答