如何使用PHP自己的函数更改数组的值

时间:2014-11-02 09:51:05

标签: php arrays

我有一个这样的数组:

$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";
                }
            });

3 个答案:

答案 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";
});

Working example

答案 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.