代码之家  ›  专栏  ›  技术社区  ›  sparecycle

基于PHP数组同一行中的另一个键值检索键值

  •  0
  • sparecycle  · 技术社区  · 7 年前

    $result =   Array(
      [0] => Array([storepickup_id] => 3[sku] => 691294[inventory] => 33[reserve] => )
      [1] => Array([storepickup_id] => 3[sku] => 692284[inventory] => 3[reserve] => )
      [2] => Array([storepickup_id] => 3[sku] => 692289[inventory] => 4[reserve] => )
      [3] => Array([storepickup_id] => 3[sku] => 693510[inventory] => 8[reserve] => )
      [4] => Array([storepickup_id] => 3[sku] => 150893[inventory] => 2[reserve] => )
      [5] => Array([storepickup_id] => 3[sku] => 150906[inventory] => 4[reserve] => )
    )
    

    我试图用一个为每个语句预先构建的数组来过滤上述数组,如下所示:

    <?php foreach ($_productCollection as $_product): ?>
        <?php
        echo "SKU: " . $_product->getSku();
        echo "INVENTORY: " . array_column($result, 'inventory', $_product->getSku());
    <?php endforeach; ?>
    

    因此,如果$_product-getSku()生成691294,我想从PHP数组的同一索引/行中检索相应的“inventory”值。

    <?php foreach ($_productCollection as $_product): ?>
      <?php
      function my_function($item_values)
      {
          if ($item_values = $_product->getSku())
          {
              return true;
          }
          return false;
      }
      $sku = $_product->getSku();
      print_r(array_filter($sku,"my_function"));
      ?>
    <?php endforeach; ?>
    

    在处理上述多维数组时,有更好的方法吗?提前谢谢。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Ravinder Reddy    7 年前

    首先,您需要创建一个新数组,其中索引/键包含sku,列/值包含来自$result数组的库存。

    $new_array = array_column($result, 'inventory', 'sku');
    

    然后在循环中使用新数组

    <?php foreach ($_productCollection as $_product): ?>
        <?php
        echo "SKU: " . $_product->getSku();
        echo "INVENTORY: " . $new_array[$_product->getSku()];
    <?php endforeach; ?>
    

    如果$_product-getSku()产生691294,则Invetory将为33

        2
  •  1
  •   miknik    7 年前
    function getIndex($needle, $haystack, $array){
        foreach($array as $key => $value){
            if(is_array($value) && $value[$haystack] == $needle)
                  return $key;
        }
        return null;
    }
    

    $i = getIndex(691294, 'Sku', $array);
    echo $array[$i]['inventory'];