在php中循环添加数组键


Looping in php to add an array key

我有这样一个数组:

array(3) {
    [0] = > array(4) {
        [0] = > int(11)[1] = > string(14)"28/07/14 13:05" [2] = > string(8)"a" [3] = > string(15)"b"
    }[1] = > array(4) {
        [0] = > int(12)[1] = > string(14)"28/07/14 15:15" [2] = > string(7)"c" [3] = > string(6)"d"
    }[2] = > array(4) {
        [0] = > int(13)[1] = > string(14)"28/07/14 15:30" [2] = > string(8)"e" [3] = > string(8)"f"
    }
}

来自PHP的foreach语句,现在…我的问题很简单:有可能(注意:使用另一个循环)为数组的每一行添加一个[4]键和一个新值?为了得到这个:

array(3) {
        [0] = > array(5) {
            [0] = > int(11)[1] = > string(14)"28/07/14 13:05" [2] = > string(1)"a" [3] = > string(1)"b" [4] = > string(8)"NEWVALUE"
        }[1] = > array(5) {
            [0] = > int(12)[1] = > string(14)"28/07/14 15:15" [2] = > string(1)"c" [3] = > string(1)"d" [4] = > string(8)"NEWVALUE"
        }[2] = > array(5) {
            [0] = > int(13)[1] = > string(14)"28/07/14 15:30" [2] = > string(1)"e" [3] = > string(1)"f" [4] = > string(8)"NEWVALUE"
        }
    }

我希望你能理解,提前感谢

EDIT:可能我不清楚…我将发布我的PHP代码:

...
$xpath = new DOMXPath($document);
$expression = '(//table[@cellpadding="3"])[1]/tr[position() > 1]';
$rows = $xpath->query($expression);
$results = array();
$result = array();
foreach ($rows as $row) {
  $td = $row->childNodes;
  $data = $td->item(2)->nodeValue;
  $immagine = $td->item(4)->firstChild->attributes->getNamedItem("src")->nodeValue;
  $team1 = $td->item(10)->nodeValue;
  $team2 = $td->item(14)->nodeValue;
  $unixTime = time()*1000;
  $result[0] = $unixTime;  
  $result[1] = $data;
  $result[2] = $team1;
  $result[3] = $team2;
  $results[] = $result;
  }
$expression1 = '(//table[@cellpadding="3"])[1]/tr[position() > 1]/td[19]/a[1]/@href';
$rows1 = $xpath->query($expression1);
$result = array();
foreach ($rows1 as $row) {
  $result[4] = $row->value;
  $results[] = $result;
}
var_dump($results); 

谢谢你的回答

EDIT:我已经把$result = array();在foreach之前,但是现在我有了这个奇怪的结果:它打印了一个"130"项数组,它由"65"个元素组成,其中包含4个键,在其他"65"项之后,其中显示了所有5个键!但是前4个键不是循环的!!

例子

第0到64个元素:

[0]=> array(4) { [0]=> int(11) [1]=> string(1) "a" [2]=> string(1) "b" [3]=> string(1) "c"
...
[64]=> array(4) { [0]=> int(74) [1]=> string(2) "a1" [2]=> string(2) "b1" [3]=> string(2) "c3"

第65至130个元素:

[65]=> array(5) { [0]=> int(11) [1]=> string(1) "a" [2]=> string(1) "b" [3]=> string(1) "c" [4]=> string(36) "popup.asp?tp=2100&lang=en&idm=556296" }
...
[130]=> array(5) { [0]=> int(11) [1]=> string(1) "a" [2]=> string(1) "b" [3]=> string(1) "c" [4]=> string(36) "popup.asp?tp=2100&lang=en&idm=452452" }

EDIT:现在显示的是一个65行数组,正确的数字,但前4行没有循环!例子:

第0到64个元素:

[0]=> array(4) { [0]=> int(11) [1]=> string(1) "a" [2]=> string(1) "b" [3]=> string(1) "c" [4]=> string(36) "popup.asp?tp=2100&lang=en&idm=452452"
[1]=> array(4) { [0]=> int(11) [1]=> string(1) "a" [2]=> string(1) "b" [3]=> string(1) "c" [4]=> string(36) "popup.asp?tp=2100&lang=en&idm=333352"
...
[65]=> array(4) { [0]=> int(11) [1]=> string(1) "a" [2]=> string(1) "b" [3]=> string(1) "c" [4]=> string(36) "popup.asp?tp=2100&lang=en&idm=999999"

您应该使用&,因为它只是引用,它将在$array中更改,因此

foreach($array as &$bit) {
  $bit[] = "New value";
}

输出为与输入$array相同的变量

您可以像这样在foreach中使用原始$array:

//$array our array
foreach($array as $key => $value){
 $array[$key][] = 'NEW VAL';
 //equivalent to use $value = 'NEW VAL' but it should be referenced
}

可以使用[]操作符。

您可以在括号中输入任何键,或者如果键是数字,就像您的情况一样:简单地将其保留为空以使数字计数增加1并添加1个元素。

foreach($array as $value) {
    $value[] = "NEWVALUE";
}