繁体   English   中英

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

[英]PHP display values of specific keys from one array based on values from another array

在过去的一周中,我一直在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>';
      }
   }
}

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

这让我头疼:(

所有答案将不胜感激!

最好的问候,迈克尔

之后编辑:

@ Nevermind :我想要的2个数组的输出将是这样的:

  • 名称:“ test”
  • 标签:'123456789'
  • 服务:“ PAID”
  • 类型:“ SIM”
  • 评论:“需要激活”
  • 地点:“城市”

// @ 不要惊慌 :正确,“状态”是一个错字! 对于那个很抱歉

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

foreach($1st_array as $key){
    if(isset($2nd_array[$key])){
        echo $key . ": " . $2nd_array[$key]
    }
}

根据您的描述,您想合并两个数组,将第一个数组的值映射到第二个数组的键。

请尝试以下方法。

<?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-

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM