PHP中的动态数组索引

时间:2014-01-09 22:01:42

标签: php

我不知道为什么我无法解决这个问题,但我希望有人可以提供帮助。

我想动态地向数组添加多个索引。例如,如果我有一个ID列表。

$ids = array(1247, 1248);

如何动态执行此操作,具体取决于数组中的ID数量?

$history['transactions'][$id1][$id2]['Thursday'] = 0;

3 个答案:

答案 0 :(得分:2)

如果我正确地告诉你,那么你的代码应该可行。除非您尝试使用您创建的数组,否则请查看。我认为一个简单的改变可以解决你的问题

这样可行:

$ids = array(1247, 1248);
$history['transactions'][$ids[0]][$ids[1]]['Thursday'] = 0;

那就是这样:

$id1 = 1247;
$id2 = 1248;
$history['transactions'][$id1][$id2]['Thursday'] = 0;

从它的外观来看,你只是没有打电话。但没有更多的代码,我无法提供更多的帮助


正如代达罗斯指出的那样,到目前为止,代码并不是真正的动态,(我假设你只是需要一个中间的片段来帮助已经动态的代码。但现在我将假设相反)这里是一个例子如何改变:

说你有数组$ids = array(1247, 1248, 1249, 1250, 1251);,你需要循环遍历它们并单独处理它们。可能最简单的方法就是:

$ids = array(1247, 1248, 1249, 1250, 1251);
foreach($ids as $id){
    $history['transactions'][$id]['Thursday'] = 0;
}

有意义吗?


第三次尝试: 更好地了解最新情况。 (对不起,花了很长时间才能穿过厚厚的头骨)

因此,如果您想要一个包含数组$ids = array(1247, 1248, 1249, 1250, 1251);的所有ID的数组,那么这就是您的解决方案:

$ids = array(1247, 1248, 1249, 1250, 1251);
$result = array('Thursday' => 0);
for($i = count($ids) -1; $i >= 0; $i--){
     $result = array($ids[$i] => $result);
}
$history = array('transactions' => $result);

var_dump($history)收益:

array(1) {
  ["transactions"]=>
  array(1) {
    [1247]=>
    array(1) {
      [1248]=>
      array(1) {
        [1249]=>
        array(1) {
          [1250]=>
          array(1) {
            [1251]=>
            array(1) {
              ["Thursday"]=>
              int(0)
            }
          }
        }
      }
    }
  }
}

现在我认为你正在寻找

答案 1 :(得分:0)

我认为,如果您更好地解释您的问题是什么,我们可以帮助您更好地解释如何创建这样的数组:

$history['transactions'][$id1][$id2]['Thursday'] = 0;

取决于数组中有多少ID。当然,你可以更好地做你想做的事。

或者,只是尝试一些其他方式,而不是将id作为数组的参数。

答案 2 :(得分:0)

您可以使用引用来动态实现此目的,但我不明白这样做的原因......

$ids = array(1247, 1248);
$data = &$history['transactions'];
foreach ($ids as $id) {
    $data = &$data[$id];
}
$data['Thursday'] = 0;