取消设置另一个数组内的数组索引

时间:2014-09-10 12:31:18

标签: php json

我有一个数组,其中有另一个数组。我需要取消设置子数组的索引。

array
  0 => 
    array
      'country_id' => string '1' (length=1)
      'description' => string 'test' (length=4)
  1 => 
    array
      'country_id' => string '2' (length=1)
      'description' => string 'sel' (length=5)
  2 => 
    array
      'country_id' => string '3' (length=1)
      'description' => string 'soul' (length=5)

现在我需要取消设置主数组的所有三个索引的country_id。我正在使用PHP,我最初认为unset会做,直到我意识到我的数组是嵌套的。

我该怎么做?

4 个答案:

答案 0 :(得分:0)

foreach ($original_array as &$element) {
  unset($element['country_id']);
}

为什么&$element

因为foreach (...)会执行副本,所以我们需要将引用传递给" current"元素是为了取消它(而不是他的副本)

答案 1 :(得分:0)

foreach ($masterArray as &$subArray)
    unset($subArray['country_id']);

这个想法是你通过引用获取每个子数组并在其中取消设置密钥。


编辑:为了让事情变得有趣,另一个想法是使用array_walk函数。

array_walk($masterArray, function (&$item) { unset ($item['country_id']); });

我不确定它是否更具可读性,而函数调用会使它变慢。不过,选择就在那里。

答案 2 :(得分:0)

foreach($yourArray as &$arr)
{
   unset($arr['country_id']);
}

答案 3 :(得分:0)

您需要使用:

foreach ($array as &$item) {
  unset($item['country_id']);
}

但是在循环之后你应该真的取消设置引用,否则你可能会遇到麻烦所以正确的代码是:

foreach ($array as &$item) {
  unset($item['country_id']);
}
unset($item);