【问题标题】:How to dynamically build a PHP array with keys and values如何使用键和值动态构建 PHP 数组
【发布时间】:2016-04-23 22:23:18
【问题描述】:

在项目中使用 PHPGraphlib。

以下将数据添加到图表中。数组值将是 y 轴值。

$graph->addData(array(100,12,43,342,9));

如果数组有key,key就是对应的x轴值。

$data = array("1" => 100, "2" => 12, "3" => 43, "4" => 342, "5" => 9);

我需要动态构建 $data 数组,从键值“1”开始,并从以逗号分隔的变量中分配值。值的数量可以改变。例如:

$values="100,12,43,342,9,22,33";

我可以将数据分解成一个数组

$splits = explode(",",$values);

现在我有了值的数量。那么我如何编写一个循环来将这些值分配给增量键,以便 $data 数组本质上是:

$data = array("1" => 100, "2" => 12, "3" => 43, "4" => 342, "5" => 9, "6" => 22, "7"=> 33);

【问题讨论】:

  • 您是否查看了 php 文档中的每个循环并在循环时创建了一个新数组

标签: php arrays key


【解决方案1】:

类似的东西?

<?php
$values="100,12,43,342,9,22,33";
$splits = explode(",",$values);
$data = array();
for ($x = 0; $x < count($splits); $x++) {
    $data[$x+1] = intval($splits[$x],10);    
}

var_dump($data);

【讨论】:

  • 这就是我这样做的原因,但它不起作用。所以我添加了 var_dump 并意识到数据被分配为字符串,而不是整数(PHPGraphlib 需要)。因此,我对您的代码进行了一项更改,现在它可以工作了。谢谢!改变 $data[$x+1] = (int)$splits[$x];
  • 好极了,意识到可能是这种情况,所以检查编辑你也可以使用floatval,snap!不错
【解决方案2】:

这应该将数组作为一个索引开始。

<?php
$values = "100,12,43,342,9,22,33";
$splits = explode(",", $values);
$data = array_combine(range(1, count($splits)), array_values($splits));
$data = array_map('intval', $data); // converts values to int

var_dump($data);

【讨论】:

  • 没问题,您能否将其中一个答案标记为解决方案?
  • 我喜欢你的回答,因为它使用了标准的 php 函数,但是由于每个函数都必须以某种方式循环,所以我测试了你的代码和我的代码,使用你的方法性能要慢得多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-27
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
相关资源
最近更新 更多