Error Undefined offset en PHP

publicado por: Anonymous

Necesito separar los elementos de un array de acuerdo a su tipo e imprimirlos en una lista.

<?php

$d[0] = 13;
$d[1] = 133;
$d[2] = 45;
$d[3] = "Hice 89 lagartijas";
$d[4] = 778;
$d[5] = 67;
$d[6] = "Que onda";
$d[7] = 456;
$d[8] = 34;
$d[9] = 645;

for($i=0; $i<=9; $i++){
    switch($d){
        case is_numeric($d[$i]):
            $s[$i] = $d[$i];
            break;
        case is_string($d[$i]):
            $k[$i] = $d[$i];
            break;
    }
}
echo "Numeros <BR>";

for($i = 0; $i<=9; $i++){
    echo "$s[$i] <br>";
}
echo "Textos <BR>";

for($i = 0; $i<=9; $i++){
    echo "$k[$i] <br>";
}

solución

Observando tu código a detalle, el problema es al momento de evaluar la cantidad de elementos que tenga los Arrays de números y letras.

<?php

$d[0] = 13;
$d[1] = 133;
$d[2] = 45;
$d[3] = "Hice 89 lagartijas";
$d[4] = 778;
$d[5] = 67;
$d[6] = "Que onda";
$d[7] = 456;
$d[8] = 34;
$d[9] = 645;

$indiceNumeros = 0;
$indiceLetras = 0;
for($i=0; $i<=9; $i++){
    switch($d){
        case is_numeric($d[$i]):            
            $s[$indiceNumeros] = $d[$i];
            $indiceNumeros++;
            break;
        case is_string($d[$i]):
            $k[$indiceLetras] = $d[$i];
            $indiceLetras++;
            break;
    }
}
echo "Numeros <BR>";

for($i = 0; $i<count($s); $i++){
    echo "$s[$i] <br>";
}
echo "Textos <BR>";

for($i = 0; $i<count($k); $i++){
    echo "$k[$i] <br>";
}   
?>

Numeros Contiene solo 8 elementos y no 9

13, 133, 45, 778, 67, 456, 34, 645

Textos Contiene solo 2 elementos y no 9

Hice 89 lagartijas, Que onda


Recomendación:

Evalúa por la cantidad de elementos que tiene un array con la función count y declara variables para los índices consecutivos.

En el caso que no necesites declarar variables para identificar los índices consecutivos otra manera de insertar elementos a un array es usando la función array_push.

Por ejemplo:

<?php
$pila = array("naranja", "plátano");
array_push($pila, "manzana", "arándano");
print_r($pila);
?>
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *