【问题标题】:Accessing and filtering an array much more efficiently in php [closed]在php中更有效地访问和过滤数组[关闭]
【发布时间】:2016-05-11 19:35:05
【问题描述】:

我写了一个代码来过滤一个 json 数组并打印一些元素,但是它导致我因为过多的 cpu 使用而被放逐(免费托管计划) 你能帮我提高效率吗?也许通过使用像 array_filter 这样的函数 这是我的代码:

$obj = json_decode($data,true);
$elements=count($obj)-1;
for ($x = 0; $x <= $elements; $x++){
  if ($obj[$x]["SymbolStateId"]==1)  {
  echo $obj[$x]["FirstOrderPage"]["ExchangeSymbols"]["NSCCode"];
  echo ",";
  echo $obj[$x]["FirstOrderPage"]["BestBuyPrice"];
  echo ";";

  }
}

【问题讨论】:

  • 您应该发布收入数据 ($data) 和所需的输出。

标签: php arrays json performance processing-efficiency


【解决方案1】:

使用array_walk + array_filter

array_filter 让您过滤数组元素并返回一个新数组,其中包含满足回调布尔语句的元素。

另一方面,

array_walk 允许您迭代每个数组元素并为每个元素应用 callback 函数

请使用string concatenation 操作符打印更多变量,不要为打印字符串做3条语句

array_walk(
    array_filter(
        $array,
        function($item) {
            return $item["SymbolStateId"] == 1;
        }
    ),
    function($item) {
        echo $item["FirstOrderPage"]["ExchangeSymbols"]["NSCCode"] . "," . $item["FirstOrderPage"]["BestBuyPrice"] . ";";
    },
);

【讨论】:

  • 谢谢,它有效!但是我如何才能知道它的效率如何?我对两个代码都使用 microtime(true),运行时间几乎相等!
猜你喜欢
  • 2018-01-15
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多