递归循环遍历PHP数组以操作数据

时间:2015-09-17 20:24:24

标签: php arrays

我正在尝试循环访问PHP数组,但我只是收回了原始数据。我认为这与我打破循环时有关

$newData = $this->seperateKeyValuePairs($data);

private function seperateKeyValuePairs($array)
{
    foreach($array as $key => $item)
    {
      if( is_array($item) ) $this->seperateKeyValuePairs($item);

      if( is_string($key) && $this->stringStartsWith($key, 'is_') ) {
        $item = $this->makeBoolean($item);
      }

    }

    return $array;
}

1 个答案:

答案 0 :(得分:1)

我认为问题出在这一行:

$item = $this->makeBoolean($item);

您可以更改项目的值。 Item不是指向数组中值的指针,而是指向它的副本,因此数组中的值保持不变。你想要做的是:

$array[$key] = $this->makeBoolean($item);

本着同样的精神,你必须改变

if( is_array($item) ) $this->seperateKeyValuePairs($item);

if( is_array($item) ) $array[$key] = $this->seperateKeyValuePairs($item);