【问题标题】:PHP display values of specific keys from one array based on values from another arrayPHP 根据另一个数组中的值显示一个数组中特定键的值
【发布时间】: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 不是第一个数组中的值之一。是错字还是我误解了问题?
  • 我已经发布了一个可行的解决方案。我猜你真的不需要第一个数组?

标签: php arrays listings


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    试试下面的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      • 2022-01-11
      • 2021-10-20
      相关资源
      最近更新 更多