我有一个如下所示的数组:
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;
}
有人能帮助我吗?
由于
答案 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 );