我想将所有' imdb'的值乘以键10,并更新值。在下面的代码中,当我print_r $ horrorMovies时,它只显示我创建了一个具有所需数量的新数组。它几乎就在那里,如果我做
$horrorMovies[0]['imdb'] = $imdbPercent;
但是这些值只是写入第一个嵌套数组。
如果有可能的话,我不确定如何使用foreach工作。
function imdbMultiply($n) {
return($n['imdb'] * 10);
}
$horrorMovies = array(
array(
"title" => "The babadook",
"imdb" => 6.8,
"rotten" => 98
),
array(
"title" => "The shining",
"imdb" => 8.4,
"rotten" => 87
)
);
$imdbPercent = array_map("imdbMultiply", $horrorMovies);
$horrorMovies['imdb'] = $imdbPercent;
答案 0 :(得分:0)
您的代码存在一些问题:
imdbMultiply
函数需要返回$n
数组,但需要修改,以便将imdb
键乘以10。array_map
返回新数组,因此您应将$horrorMovies
设置为array_map
最后,您的代码应如下所示:
function imdbMultiply ($n) {
$n['imdb'] *= 10;
return $n;
}
$horrorMovies = array_map('imdbMultiply', $horrorMovies);
答案 1 :(得分:0)
//original data
$horrorMovies = array(
array(
"title" => "The babadook",
"imdb" => 6.8,
"rotten" => 98
),
array(
"title" => "The shining",
"imdb" => 8.4,
"rotten" => 87
)
);
//define "transformation" function, note that the argument is passed via reference
function imdbMultiply(&$n) {
$n['imdb'] *= 10;
}
//one option is to use foreach and then unset the reference to the
//last array element
foreach($horrorMovies as &$v){
$v['imdb'] *= 10;
}
unset($v);
print_r($horrorMovies);
//alternatively, one might apply the "transformation" function
//directly to each array element without the need to create a copy
array_walk($horrorMovies, "imdbMultiply");
print_r($horrorMovies);
答案 2 :(得分:0)
如果我理解你的期望,你的imdbMultiply()函数应该与array_map一起使用:
function imdbMultiply($n) {
$n['imdb'] *= 10;
return $n;
}
这是你期望的吗?
另一个想法是使用array_walk函数,但你应该像这样定义你的imdbMultiply()函数:
function imdbMultiply(&$n) {
$n['imdb'] *= 10;
}
array_walk的用法不同:
array_walk($horrorMovies, "imdbMultiply");
var_dump($horrorMovies);
答案 3 :(得分:0)
您可以直接使用子数组[imdb]项目。
$horrorMovies = array(
array(
"title" => "The babadook",
"imdb" => 6.8,
"rotten" => 98
),
array(
"title" => "The shining",
"imdb" => 8.4,
"rotten" => 87
)
);
foreach($horrorMovies as &$subarray){
$subarray["imdb"] *= 10;
}
var_dump($horrorMovies);
答案 4 :(得分:0)
您只需要进入一个循环并更改“imdb”即可。值,添加下一个 for 循环到您的代码:
for ($i=0; $i<count($horrorMovies); $i++){
$horrorMovies[$i]['imdb']*=10;
}