【问题标题】:Return key values from first array whose key is in second array从键在第二个数组中的第一个数组返回键值
【发布时间】:2019-08-12 06:16:36
【问题描述】:

我有两个数组,我想通过键从第一个数组中搜索,仅在第二个数组中,作为第三个数组,我想打印结果:

$colldata=array("bench-press-rod"=>'',"adidas-classic-backpack"=>'93549559913',"adidas-classic-backpack-legend-ink-multicolour"=>'',"puma-suede-classic-regal"=>'93549920361,93549723753');
$colldata2=array(0 => 'bench-press-rod',1 => 'adidas-classic-backpack');

预期结果:

array('bench-press-rod'=>'',"adidas-classic-backpack"=>'93549559913');

【问题讨论】:

标签: php arrays


【解决方案1】:

您可以在 PHP 的一行中完成此操作,使用 array_flip 交换第二个数组的键和值,然后使用 array_intersect_key 在匹配键上合并两个数组:

$colldata=array("bench-press-rod"=>'',"adidas-classic-backpack"=>'93549559913',"adidas-classic-backpack-legend-ink-multicolour"=>'',"puma-suede-classic-regal"=>'93549920361,93549723753');
$colldata2=array(0 => 'bench-press-rod',1 => 'adidas-classic-backpack');

print_r(array_intersect_key($colldata, array_flip($colldata2)));

输出:

Array
(
    [bench-press-rod] => 
    [adidas-classic-backpack] => 93549559913
)

Demo on 3v4l.org

【讨论】:

    【解决方案2】:

    我能想到的最简单的方法是遍历第二个数组并将第一个数组中的匹配键添加到输出中。如果该项目不存在,那么它将Not found 放在输出中...

    $output = [];
    foreach ( $colldata2 as $item ) {
        $output[$item] = $colldata[$item] ?? 'Not found';
    }
    print_r($output);
    

    给..

    Array
    (
        [bench-press-rod] => 
        [adidas-classic-backpack] => 93549559913
    )
    

    【讨论】:

      【解决方案3】:

      检查一下。

      $colldata=array("bench-press-rod"=>'',"adidas-classic-backpack"=>'93549559913',"adidas-classic-backpack-legend-ink-multicolour"=>'',"puma-suede-classic-regal"=>'93549920361,93549723753');
      $colldata2=array(0 => 'bench-press-rod',1 => 'adidas-classic-backpack');
      
      $result = [];
      foreach ($colldata2 as $key => $value) {
          if (array_key_exists($value, $colldata)) {
              array_push($result,$colldata[$value]);
          }            
      }
      echo '<pre/>';
      print_r($result);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-23
        • 1970-01-01
        • 1970-01-01
        • 2019-09-02
        • 1970-01-01
        • 2021-11-09
        • 2021-12-05
        • 2011-10-05
        相关资源
        最近更新 更多