PHP根据另一个数组中的值显示一个数组中特定键的值

时间:2014-12-19 22:48:00

标签: php arrays listings

过去一周,我一直在开发一个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
)

数组的长度不同:

  • 1st的长度为6
  • 2nd的长度为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>';
      }
   }
}

关于如何使这项工作的任何想法?

这令我头疼:(

所有答案都将深表感谢!

我最诚挚的问候, 迈克尔

稍后编辑:

@ Nevermind :我想从2个阵列输出的内容如下:

  • 姓名:'test'
  • 标签:'123456789'
  • 服务:'付费'
  • 类型:'SIM'
  • 评论:'需要激活'
  • 地点:'A city'

@ 不要恐慌:正确,“状态”是一个错字!抱歉,

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-