【问题标题】:php Laravel - find element in arrayphp Laravel - 在数组中查找元素
【发布时间】:2016-11-11 17:39:27
【问题描述】:

我想使用 foreach 在我的输出中显示 orderId

这是我的代码:

$orders = $results['result']['data'];
foreach ($orders as $key => $order)
{
     dd($order[$order]['orderId']);
}

这是 $orders 结果:

  1 => array:3 [
    "orderId" => 4
    "orderTotalPrice" => 100
    }
    "resId" => 1
  ]
  2 => array:3 [
    "orderId" => 18
    "orderTotalPrice" => 100
    }
    "resId" => 1
  ]
  3 => array:3 [
    "orderId" => 34
    "orderTotalPrice" => 100
    }
    "resId" => 1
  ]
  4 => array:3 [
    "orderId" => 64
    "orderTotalPrice" => 100
    }
    "resId" => 1
  ]

有什么建议吗?

【问题讨论】:

  • 那些}是从哪里来的?
  • @Rizier123 我编辑了我的问题。

标签: php arrays laravel foreach


【解决方案1】:

通过使用foreach,您可以这样做:

$orderIDs = [];
foreach ($orders as $order){
     $orderIDs[] = $order['orderId'];
}

或者您可以使用pluck 方法。它将检索给定键的所有集合值:

collect($orders)->pluck('orderId')->all();

【讨论】:

  • 在这种情况下,我认为您不需要在 foreach 之前声明 $orderIDs = [];...对吗?
  • 你说得对;)我不知道,也许这是其他语言的习惯!
  • 这使它成为一个更清洁的解决方案(更少的代码)。问题是,如果您要遍历大量数据,则在您的方法上使用array_push 更有意义。更好的性能。如果您需要附加一个或两个项目,这将更有意义。任何一个选项都应该对发帖人有所帮助 - 为 collect() 方法 +1! :)
【解决方案2】:

也许是这样的?

$order_ids = [];

foreach ($orders as $order)
{
    array_push($order_ids, $order['orderId']);
}

return $order_ids;

根据 @IsmailRBOUH 的回答,如果您要添加/提取少量数据,请使用他的解决方案。如果您要循环处理 大量 数据,使用array_push 会更好(在性能方面)。但老实说,这只是他们两者之间的一小部分差异。 $array[] 通常会在顶部...

PHP 的网站:

注意:如果你使用 array_push() 向数组中添加一个元素,它是 最好使用 $array[] = 因为这样没有开销 调用函数。

【讨论】:

    【解决方案3】:

    "用于在输出中显示 orderId:"

    $orders = $results['result']['data'];
    foreach ($orders as $key => $order)
    {
         echo $order['orderId'];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多