Truncando las matrices de PHP

  • wpas
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Jul 12, 2010
  • Mensajes: 214
  • Loc: Canada
  • Status: Offline

Nota Noviembre 10th, 2010, 11:25 am

Hola a todos

Tengo la siguiente matriz:

Código: [ Select ]

$browser = array(
  'Firefox 3.0.1',
  'Firefox 3.5.13',
  'Firefox 3.6.12',
  'Internet Explorer 6.0',
  'Internet Explorer 7.0',
  'Internet Explorer 8.0',
  'Safari 525.13',
);
  1. $browser = array(
  2.   'Firefox 3.0.1',
  3.   'Firefox 3.5.13',
  4.   'Firefox 3.6.12',
  5.   'Internet Explorer 6.0',
  6.   'Internet Explorer 7.0',
  7.   'Internet Explorer 8.0',
  8.   'Safari 525.13',
  9. );


Quiero truncar la matriz de modo que se eliminan del tha numéricos para obtener:

Código: [ Select ]

$newarray = array(
  'Firefox',
  'Firefox',
  'Firefox',
  'Internet Explorer',
  'Internet Explorer',
  'Internet Explorer',
  'Safari',
);
  1. $newarray = array(
  2.   'Firefox',
  3.   'Firefox',
  4.   'Firefox',
  5.   'Internet Explorer',
  6.   'Internet Explorer',
  7.   'Internet Explorer',
  8.   'Safari',
  9. );


Ahora para obtener los totales para cada navegador que se utilice:

Código: [ Select ]

$browserout = array_count_values ($newarray);

  1. $browserout = array_count_values ($newarray);


¿Alguien puede darme algunas ideas como yo no han sido capaces de hacer esto

Gracias
http://www.schembrionics.com
The Ultimate Solutions Center
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Noviembre 10th, 2010, 11:25 am

  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de Usuario
  • Registrado: May 22, 2004
  • Mensajes: 3415
  • Loc: Richland, WA
  • Status: Offline

Nota Noviembre 10th, 2010, 11:38 am

Mira en esto:
Código: [ Select ]
$newitem = ereg_replace("[^a-zA-Z]", "", $item);


El código anterior se eliminará todo lo que no se corresponde con el patrón y lo devuelve.
#define NULL (::rand() % 2)
  • wpas
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Jul 12, 2010
  • Mensajes: 214
  • Loc: Canada
  • Status: Offline

Nota Noviembre 10th, 2010, 2:12 pm

Hola falsos

Appare notly que se supone que nos preg_replace ahora

Tomé su idea y creó el siguiente script y #058;

Código: [ Select ]

$new=array();
foreach($browsers as $K=>$A)
{
$Key = preg_replace("[^a-zA-Z]", "", $K);
$ZKey = $browsers[$K];
$new[$ZKey] = $browsers[$Key];
}

echo "<pre>";
print_r ($new);
echo "</pre>";
  1. $new=array();
  2. foreach($browsers as $K=>$A)
  3. {
  4. $Key = preg_replace("[^a-zA-Z]", "", $K);
  5. $ZKey = $browsers[$K];
  6. $new[$ZKey] = $browsers[$Key];
  7. }
  8. echo "<pre>";
  9. print_r ($new);
  10. echo "</pre>";


La salida que tengo es de abajo;

Código: [ Select ]

Array
(
  [Firefox 3.0.1] => Firefox 3.0.1
  [Firefox 3.5.13] => Firefox 3.5.13
  [Firefox 3.6.12] => Firefox 3.6.12
  [Internet Explorer 6.0] => Internet Explorer 6.0
  [Internet Explorer 7.0] => Internet Explorer 7.0
  [Internet Explorer 8.0] => Internet Explorer 8.0
  [Safari 525.13] => Safari 525.13
)
  1. Array
  2. (
  3.   [Firefox 3.0.1] => Firefox 3.0.1
  4.   [Firefox 3.5.13] => Firefox 3.5.13
  5.   [Firefox 3.6.12] => Firefox 3.6.12
  6.   [Internet Explorer 6.0] => Internet Explorer 6.0
  7.   [Internet Explorer 7.0] => Internet Explorer 7.0
  8.   [Internet Explorer 8.0] => Internet Explorer 8.0
  9.   [Safari 525.13] => Safari 525.13
  10. )


¿Puedes decirme lo que me perdí aquí

Gracias
http://www.schembrionics.com
The Ultimate Solutions Center
  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de Usuario
  • Registrado: May 22, 2004
  • Mensajes: 3415
  • Loc: Richland, WA
  • Status: Offline

Nota Noviembre 10th, 2010, 2:17 pm

preg_replace devuelve la cadena manipulado. También $ K es una clave, usted pálido usar $ A en la función.
#define NULL (::rand() % 2)
  • wpas
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Jul 12, 2010
  • Mensajes: 214
  • Loc: Canada
  • Status: Offline

Nota Noviembre 10th, 2010, 3:03 pm

Hola falsos

Lo hice de la siguiente manera:

Código: [ Select ]

$new=array();
foreach($browsers as $K=>$A)
{
$Key = preg_replace("[^a-zA-Z]", "", $A);
$ZKey = $browsers[$A];
$new[$ZKey] = $browsers[$Key];
}

echo "<pre>";
print_r ($new);
echo "</pre>";
  1. $new=array();
  2. foreach($browsers as $K=>$A)
  3. {
  4. $Key = preg_replace("[^a-zA-Z]", "", $A);
  5. $ZKey = $browsers[$A];
  6. $new[$ZKey] = $browsers[$Key];
  7. }
  8. echo "<pre>";
  9. print_r ($new);
  10. echo "</pre>";


Sin embargo, mi salida ahora está en blanco:

Código: [ Select ]

Array
(
  [] =>
)
  1. Array
  2. (
  3.   [] =>
  4. )


¿Estoy aún falta algo

Gracias
http://www.schembrionics.com
The Ultimate Solutions Center
  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de Usuario
  • Registrado: May 22, 2004
  • Mensajes: 3415
  • Loc: Richland, WA
  • Status: Offline

Nota Noviembre 10th, 2010, 3:12 pm

Usar la siguiente dentro de su foreach:

Código: [ Select ]
$new[] = preg_replace("[^a-zA-Z]", "", $A);
#define NULL (::rand() % 2)
  • wpas
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Jul 12, 2010
  • Mensajes: 214
  • Loc: Canada
  • Status: Offline

Nota Noviembre 10th, 2010, 3:39 pm

No está seguro de lo que quieres decir

debo cambiar todo en el bucle foreach con su sugerencia

Código: [ Select ]

$new=array();
foreach($browsers as $K=>$A)
{
$new[] = preg_replace("[^a-zA-Z]", "", $A);
}
  1. $new=array();
  2. foreach($browsers as $K=>$A)
  3. {
  4. $new[] = preg_replace("[^a-zA-Z]", "", $A);
  5. }
http://www.schembrionics.com
The Ultimate Solutions Center
  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de Usuario
  • Registrado: May 22, 2004
  • Mensajes: 3415
  • Loc: Richland, WA
  • Status: Offline

Nota Noviembre 10th, 2010, 3:43 pm

#define NULL (::rand() % 2)
  • wpas
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Jul 12, 2010
  • Mensajes: 214
  • Loc: Canada
  • Status: Offline

Nota Noviembre 10th, 2010, 3:50 pm

Lo hice y ahora sale el siguiente:

Código: [ Select ]

Array
(
  [0] => Firefox 3.0.1
  [1] => Firefox 3.0.1
  [2] => Firefox 3.5.13
  [3] => Firefox 3.5.13
  [4] => Firefox 3.6.12
  [5] => Firefox 3.6.12
  [6] => Firefox 3.6.12
  [7] => Internet Explorer 6.0
  [8] => Internet Explorer 6.0
  [9] => Internet Explorer 7.0
  [10] => Internet Explorer 7.0
  [11] => Internet Explorer 8.0
  [12] => Safari 525.13
)
  1. Array
  2. (
  3.   [0] => Firefox 3.0.1
  4.   [1] => Firefox 3.0.1
  5.   [2] => Firefox 3.5.13
  6.   [3] => Firefox 3.5.13
  7.   [4] => Firefox 3.6.12
  8.   [5] => Firefox 3.6.12
  9.   [6] => Firefox 3.6.12
  10.   [7] => Internet Explorer 6.0
  11.   [8] => Internet Explorer 6.0
  12.   [9] => Internet Explorer 7.0
  13.   [10] => Internet Explorer 7.0
  14.   [11] => Internet Explorer 8.0
  15.   [12] => Safari 525.13
  16. )


No quitar los números
http://www.schembrionics.com
The Ultimate Solutions Center
  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de Usuario
  • Registrado: May 22, 2004
  • Mensajes: 3415
  • Loc: Richland, WA
  • Status: Offline

Nota Noviembre 10th, 2010, 4:06 pm

Ah, ya veo lo que pasó, preg_replace necesita una sintaxis ligeramente diferente.

Código: [ Select ]
$new[] = preg_replace("/[^a-zA-Z\ ]/s", "", $A);
#define NULL (::rand() % 2)
  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de Usuario
  • Registrado: May 22, 2004
  • Mensajes: 3415
  • Loc: Richland, WA
  • Status: Offline

Nota Noviembre 10th, 2010, 4:11 pm

Usted puede poner un trim () alrededor de la función preg_replace para eliminar los espacios al comienzo.
#define NULL (::rand() % 2)
  • wpas
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Jul 12, 2010
  • Mensajes: 214
  • Loc: Canada
  • Status: Offline

Nota Noviembre 10th, 2010, 4:15 pm

Yo hice lo siguiente

Código: [ Select ]

$new=array();
foreach($basicclean as $K=>$A)
{
$new[] = trim(preg_replace("[^a-zA-Z]", "", $A));
}
  1. $new=array();
  2. foreach($basicclean as $K=>$A)
  3. {
  4. $new[] = trim(preg_replace("[^a-zA-Z]", "", $A));
  5. }


No tenía sentido, los números siguen ahí
http://www.schembrionics.com
The Ultimate Solutions Center
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Noviembre 10th, 2010, 4:19 pm

SpooF escribió:
Usted puede poner un trim () alrededor de la función preg_replace para eliminar los espacios al comienzo.


Diablos, ¿por qué no añadir los números y las cosas mientras estábamos en ello? :D

Código: [ Select ]
$new = array();

foreach($old as $key => $val)
{
  $val = strtolower(trim($val, ' .1234567890/'));
  if(empty($new[$val])) $new[$val] = 0;
  $new[$val]++;
}
  1. $new = array();
  2. foreach($old as $key => $val)
  3. {
  4.   $val = strtolower(trim($val, ' .1234567890/'));
  5.   if(empty($new[$val])) $new[$val] = 0;
  6.   $new[$val]++;
  7. }


Malos admitir que estaba pensando preg_replace demasiado hasta que menciona trim (). Su fácil de usar expresiones regulares como un go-to. gif "alt =": D "title =" Muy feliz ">
Strong with this one, the sudo is.
  • wpas
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Jul 12, 2010
  • Mensajes: 214
  • Loc: Canada
  • Status: Offline

Nota Noviembre 10th, 2010, 4:44 pm

Intentado su sugerencia capitán afro y funcionó muy bien.

Lo que también me gustó fue que también le da la cuenta para cada navegador que realmente me ahorra un paso.

Quiero dar las gracias a usted y falsos por su ayuda

Ustedes son grandes
http://www.schembrionics.com
The Ultimate Solutions Center

Publicar Información

  • Total de mensajes en este tema: 14 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 203 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC