【问题标题】:PHP - foreach to create array - data being overwrittenPHP - foreach 创建数组 - 数据被覆盖
【发布时间】:2016-01-11 11:44:02
【问题描述】:

我正在尝试创建一个如下所示的数组,但这次是动态的

$taInputs = array(
    "fieldOne" => array($this->fieldOne, '0,166,198'),
    "fieldTwo" => array($this->fieldTwo, '0,166,198'),
    "fieldThree" => array($this->fieldThree, '0,166,198'),
    "fieldFour" => array($this->fieldFour, '0,166,198')
);

所以,我创建了我的数组对象

$this->data = array();

然后我有以下循环

foreach($this->document->documentData as $documentData)
{
    $this->data = array(
        $documentData->key => array($documentData->value, '228,47,57')
    );
}

目前,如果我在 foreach 循环之后输出数据数组,我只看到最后一个条目,所以它在每个循环上都会覆盖它。

如何在不被覆盖的情况下创建我所追求的数组?

【问题讨论】:

  • $this->data[] = .... 也许?

标签: php arrays


【解决方案1】:

你需要使用PHP的[]来设置数组的key。

所以,将$this->data 更改为$this->data[ $documentData->key ]

foreach($this->document->documentData as $documentData)
{
    $this->data[$documentData->key] = array($documentData->value, '228,47,57');
}

没有变量你可以像这样手动设置:

$this->data[ 'fieldOne' ] = array('someValue', '228,47,57');
$this->data[ 'fieldTwo' ] = array('someValue', '228,47,57');
$this->data[ 'fieldThree' ] = array('someValue', '228,47,57');
$this->data[ 'fieldFour' ] = array('someValue', '228,47,57');

然后您可以使用以下方法遍历这些值:

foreach ($this->data as $key => $data) {
    print "$key => $data[0], $data[1]";
}

通常你会想要这样定义它,因为通过键号访问数组有点烦人:

$this->data[ 'fieldOne' ] = array('documentValue' => 'someValue', 'myNumber' => '228,47,57');

这样您就可以使用 documentValue 或 myNumber 键轻松访问它:

echo $this->data['fieldOne']['documentValue'];
echo $this->data['fieldOne']['myNumber'];

【讨论】:

    【解决方案2】:

    你也可以这样做

    foreach($this->document->documentData as $documentData)
    {
        $this->data[$documentData->key] = array($documentData->value, '228,47,57');    
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-25
      • 2021-02-16
      • 2012-05-09
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多