Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

184
Views
¿Ordenando la matriz de PHP con la configuración regional?

¿Es posible ordenar una matriz de PHP con una configuración regional?

Esta es la configuración:

Estoy haciendo una lista ordenada interactiva en PHP. Mediante la entrada del usuario, se puede hacer que una de varias categorías (columnas) dirija la clasificación (nombre, residencia, etc.). Esto lo resolví usando la función array_multisort() .

Siguiente obstáculo. La lista está en sueco y el usuario esperará un orden alfabético en sueco: abcdefghijklmnopqrstuvxyzåäö. En este momento, el intérprete clasifica åäö como no alfabéticos y los coloca antes de "a". ¿Cómo remediar?

Encontré información dispersa sobre una setlocale(LC_COLLATE, "sv_SV") , pero las críticas no fueron muy favorables y no logré comprender cómo podría usarse con array_multisort() . ¿Puede? y si es así, ¿cómo? ¿Hay otra forma dentro de php?

La cuestión es que debe haber alguna manera: abundan los sitios web suecos en los que se aplica el orden de clasificación sueco. se puede hacer con php?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Utilice collator_sort o collator_asort .

 // sorting properly accented "Č" in Czech language (should come after "C" and before "D") // 1) Simple sort: $array = ['bca', 'čaz', 'cba', 'abc', 'daz']; $collator = collator_create('cs-CZ'); collator_sort($collator, $array); // result: // ['abc', 'bca', 'cba', 'čaz', 'daz'] // 2) Maintain index assotiations: $array = [ 'x' => 'Česko', 'y' => 'Dänmark', 'z' => 'Brunei', 'w' => 'Cyprus' ]; $coll = collator_create('sk'); // set Slovak locale (or sk-SK) collator_asort($coll, $array); /* result: $array = [ 'z' => 'Brunei', 'w' => 'Cyprus', 'x' => 'Česko', 'y' => 'Dänmark', ]; */
about 4 years ago · Santiago Trujillo Report

0

Utilice SORT_LOCALE_STRING como tercer parámetro de la función array_multisort() . Los documentos de PHP dicen:

SORT_LOCALE_STRING: compara elementos como cadenas, según la configuración regional actual. Utiliza la configuración regional, que se puede cambiar usando setlocale()

ejemplo:

 $result=array_multisort( $input_array, SORT_ASC, SORT_LOCALE_STRING);
about 4 years ago · Santiago Trujillo Report

0

Lo siento. Este no era el problema que pensaba que era. El texto escrito en mi código se ordena correctamente (solo que ä se ordena incorrectamente antes de å, pero eso parece un error en las especificaciones (?)).

De todos modos, el problema es obviamente con la codificación de caracteres. Es cuando el texto se obtiene de una base de datos de Contact Form 7 (complemento de WordPress) que surge el problema. Presumiblemente tiene otra codificación y necesita conversión.

Gracias de cualquier manera.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!