douwen3965 2017-10-03 18:50 采纳率: 0%
浏览 29
已采纳

根据PHP数组的同一行中的另一个键值检索键值

I'm working with an indexed PHP array that resembles this structure:

$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] => )
)

I'm attempting to filter the above array with a prebuilt FOR EACH statement from that looks like this:

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

So if $_product-getSku() yields 691294, I would like to retrieve the corresponding 'inventory' value from the same index/row of the PHP array.

The above array_column within the FOR EACH did not work. I also attempted a function based on array_filter that failed to yield proper results:

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

Is there a better approach when working with multidimensional arrays such as above? Thanks in advance.

  • 写回答

2条回答 默认 最新

  • dongmi4720 2017-10-03 19:07
    关注

    First you need to create a new array with index/key contain sku and column/value contain inventory from $result array.

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

    Then use the new array in the loop

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

    If $_product-getSku() yields 691294, Invetory will be 33

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)