Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

116
Visualizações
Explotar cadena en comas y tuberías para crear dos matrices

Hice la codificación de la siguiente manera y obtuve el resultado incorrecto:

 $asst_vicars_data_arr=explode(',',$asst_vicars_data); $asst_head_type_count=count($asst_vicars_data_arr); $d = explode("|",$data); foreach ($asst_vicars_data_arr as $value) { $arr = explode("|",$value); print_r($arr); }

Aporte:

 $asst_vicars_data_arr=Array ( [0] => PT|1 [1] => O|4 [2] => PT|15,... )

Rendimiento esperado:

 $type=Array([0] => PT, [1] => O,...) $heads=Array([0] => 1, [1] => 4,...)

¿Qué puedo hacer para crear estas dos matrices?

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Espero que esto te ayude. Aquí estoy usando explode para romper una cadena y un bucle foreach .

Pruebe este fragmento de código aquí

 <?php ini_set('display_errors', 1); $asst_vicars_data_arr=Array ( 0 => "PT|1", 1 => "O|4", 2 => "PT|15", 3 =>"1|6"); $types=array(); $heads=array(); foreach($asst_vicars_data_arr as $value) { list($types[],$heads[])=explode("|",$value); } print_r($types); print_r($heads);
about 4 years ago · Santiago Trujillo Relatório

0

Puedes probar esto

 <?php $asst_vicars_data_arr=array ( 0 => 'PT|1' , 1 => 'O|4' , 2 =>'PT|15'); foreach ($asst_vicars_data_arr as $value) { $arr = explode("|",$value); $type [] = $arr[0]; $heads [] = $arr[1]; } print_r($type); print_r($heads); ?>

Violín

about 4 years ago · Santiago Trujillo Relatório

0

En esencia, esta pregunta es un ejercicio de conversión de cadena a matriz. En lugar de hacer un montón de explode() , investiguemos un par de métodos que harán menos llamadas a funciones iteradas...

Método n. ° 1 : una sola línea usando preg_match() y list()

 preg_match_all('/([^|]+)\|([^,]+),?/',$asst_vicars_data,$m)?list(,$type,$heads)=$m:null; // output: $type=array(0=>'PT', 1=>'O', 2=>'PT') // output: $heads=array(0=>'1', 1=>'4', 2=>'15')

Método #2 : 3 líneas usando preg_split() , array_chunk() y array_column()

 $asst_vicars_data='PT|1,O|4,PT|15'; $a=array_chunk(preg_split('/,|\|/',$asst_vicars_data),2); $type=array_column($a,0); // output: array(0=>'PT', 1=>'O', 2=>'PT') $heads=array_column($a,1); // output: array(0=>'1', 1=>'4', 2=>'15')

Mi primer método utiliza un patrón de expresiones regulares ajustadas para extraer los valores que list() establece fácilmente en variables. La coma inicial de list() significa que al primer subarreglo (las cadenas completas) de $m no se le asignará un nombre de variable.

Mi segundo método usa un patrón de expresiones regulares ajustadas para explotar la cadena en tuberías y comas en el mismo paso. array_chunk() pone los elementos en pares. Finalmente array_column() obtiene los valores "verticales" en la matriz.

Todas las demás respuestas actualmente en esta página usan llamadas de explode() en cada iteración. Este enfoque se vuelve cada vez más ineficiente a medida que crece el tamaño de la entrada. Por esta razón, será más eficiente llevar a cabo toda la explosión/división una vez y avanzar desde allí.

El método #1 es claramente mi método favorito para este caso; Solo quería mostrar el Método #2 como una alternativa que también disecciona la cuerda una sola vez antes de procesar las piezas.


Aquí hay algunos métodos adicionales que se comportan como los bucles foreach en otras respuestas (también sufren la misma ineficiencia porque llaman a explode() en cada iteración):

array_map() se puede usar para escribir una pequeña y agradable frase:

 $asst_vicars_data='PT|1,O|4,PT|15'; array_map(function($a)use(&$type,&$heads){list($type[],$heads[])=explode('|',$a);},explode(',',$asst_vicars_data)); var_export($type); var_export($heads);

La misma historia con array_walk() pero con una línea extra de código:

 $asst_vicars_data='PT|1,O|4,PT|15'; $asst_vicars_data_arr=explode(',',$asst_vicars_data); array_walk($asst_vicars_data_arr,function($a)use(&$type,&$heads){list($type[],$heads[])=explode('|',$a);}); var_export($type); var_export($heads);
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda