Оптимизировать создание вложенных массивов на основе строкового префикса - PullRequest
0 голосов
/ 07 декабря 2011

В моем последнем вопросе был создан способ разделения массива на основе строкового шаблона Father_son , но теперь мне нужен способ разделить новый шаблон: Father_N_son

Оригинал (генерируется кодом http://ideone.com/pmHHR):

array
  'Pagamento' => 
    array
      'data' => string '' (length=0)
      '0_pessoaId' => string '85' (length=2)
      '0_valorBruto' => string '890.00' (length=6)
      '1_pessoaId' => string '83' (length=2)
      '1_valorBruto' => string '20.00' (length=5)

Теперь мне нужно:

array
  'Pagamento' => 
    array
      'data' => string '' (length=0)
      0 => 
        array
          'pessoaId' => string '85' (length=2)
          'valorBruto' => string '890.00' (length=6)
      1 => 
        array
          'pessoaId' => string '83' (length=2)
          'valorBruto' => string '20.00' (length=5)

Спасибо, Селсо

1 Ответ

0 голосов
/ 08 декабря 2011

мое решение с регулярным выражением:

static function parserRequest($array = null) {

        if (empty($array)) {
            $array = $_REQUEST;
        }

        foreach ($array as $k => $v) {

            $name = explode('_', $k);
            $newkey = array_shift($name);
            $newname = implode('_', $name);

            //para o padrão Entidade.n.atributo
            if(preg_match("/[0-9]_[a-z]/", strtolower($newname))){

                $nameValued    = explode('_',$newname);
                $newkeyValued  = array_shift($name);
                $newnameValue  = implode('_', $name);

                $result[$newkey][$newkeyValued][$newnameValue] = $v;

            }else{

                //para o padrão Entidade.atributo
                $result[$newkey][$newname] = $v;

            }

        }

        return $result;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...