将元素添加到数组中

时间:2012-07-10 13:15:11

标签: php multidimensional-array

我有一个如下所示的数组:

array
  0 => 
    array
      'title' => string 'Ireland - Wikipedia, the free encyclopedia'
      'url' => string 'http://en.wikipedia.org/wiki/Ireland'
  1 => 
    array
      'title' => string 'Ireland's home for accommodation, activities.'
      'url' => string 'http://www.ireland.com/'

我想为每个元素添加0分。我认为这个简单的foreach循环可以解决这个问题,但是......好吧......它没有:/

public function setScore($result)
{
    foreach($result as $key)
    {
        $key = array('title', 'url', 'score' => 0);
    }
    return $result;
}

有人能帮助我吗?

由于

4 个答案:

答案 0 :(得分:6)

foreach适用于数组的副本。你可以随心所欲地修改$key,它不会反映在原始数组上。

您可以使用$key 参考,然后它会按预期工作:

foreach ($result as &$value) {
    $value['score'] = 0;
}

手动输入: http://php.net/manual/en/control-structures.foreach.php

答案 1 :(得分:3)

你在这里创建一个新数组,不做任何事情:

 foreach($result as $key){
     $key = array('title', 'url', 'score' => 0);
 }

您要做的是修改对现有引用的引用:

 foreach($result as &$key){  # Note the '&' here
     $key['score'] = 0;
 }

答案 2 :(得分:2)

虽然deceze是正确的,但您也可以使用array_walk()执行此操作,如下所示:

array_walk( $result, function( &$el) { $el['score'] = 0; });

答案 3 :(得分:0)

以下是如何实现此目标的示例。

$array = array( array( 'title' => "Ireland - Wikipedia, the free encyclopedia", 'url' => "http://en.wikipedia.org/wiki/Ireland"), array( 'title' => "Ireland's home for accommodation, activities.", 'url' => "http://www.ireland.com/" ) );

function setScore( $result )
{
    foreach( $result as &$element )
    {
        $element['score'] = 0;
}
    return $result;
}

$array = setScore( $array );

print_r( $array );

你也可以这样做:

function setScore( &$result )
{...}

然后只是:

setScore( $array );