我有一个这样的数组:
$result = array(
0 => array(
"title" => "I am a hero!",
"cat" => "literature",
"date" => "23/7/2014",
),
1 => array(
"title" => "Significant Moment!",
"cat" => "psychology",
"date" => "29/7/2014",
),
2 => array(
"title" => "Coins do not count",
"cat" => "economy",
"date" => "23/7/2014",
),
);
现在我想循环遍历数组,并检查当前密钥是否正确 " title",然后请更改其值。有点像这样:
for(looping $result)
{
if($current_key == "title")
{
$result[$current_key] = "Now title is change";
}
}
我想使用PHP的数组函数。我认为array_walk_recursive
是这个的选择。我尝试了以下代码,但它更改了每个值,而不仅仅是相应的键:
array_walk_recursive($results, function(&$item, $key) use(&$results){
if($key == "title");
{
$item = "Title Changed";
}
});
答案 0 :(得分:1)
没有理由以递归方式遍历此数组,因为您已经知道它的深度。
我的建议是使用简单的for循环:
for($i = 0; $i < sizeof($result); $i++)
$result[$i]['title'] = "Now title is change";
如果你真的坚持使用array_
函数,你可以像这样使用PHP array_walk()
:
array_walk($result, function(&$a, $key){
$a['title'] = "Now title is change";
});
答案 1 :(得分:1)
你的代码很好,但你在if语句行有分号,所以&#34;如果&#34;被忽略
array_walk_recursive($results, function(&$item, $key) use(&$results){
printer($key, true, false, false);
if($key == "title") {
$item = "Title Changed";
}
});
答案 2 :(得分:0)
如果我没有错过任何东西,对我来说,你想要实现的是一个简单的映射......
所以你可以使用array_map功能:
<?php
// $result = ...
$new_result = array_map(
function($item){
$item["title"] = "Now title is change";
return $item;
},
$result
);
// Now $new_result is what you want.