ForEach su array multidimensionale ricevuto con JSON.parse

di il
2 risposte

ForEach su array multidimensionale ricevuto con JSON.parse

Buona domenica

Non riesco a usare foreach su un array multidimensionale. Non capisco i risultati che mi dà
$sql = mysqli_query($mysqli_connection, "SELECT gruppo, nome_foto, link, if(link LIKE 'http%', 1, 0) as completi, if(link LIKE 'Error%', 1, 0) as incompleti FROM foto WHERE categoria = '$CATEGORIA' AND cartella_locale = '$DATA' AND link IS NOT NULL ORDER BY link DESC");
while($riga = mysqli_fetch_assoc($sql)){
	if($riga['completi']){
		$data['completi'][$riga['gruppo']][] = $riga['nome_foto']."__".$riga['link'];
	}
	if($riga['incompleti']){
		$data['incompleti'][$riga['gruppo']][] = $riga['nome_foto']."__".$riga['link'];
		if(array_key_exists($riga['gruppo'], $data['completi'])){
			unset($data['completi'][$riga['gruppo']]);
		}
	}
}
Io ho questo array, fatto di 2 array
il primo array completi
gruppo 1, e gli elementi di gruppo 1
il secondo array incompleti
del gruppo 2 gli elementi del gruppo 2
del gruppo 4 gli elementi del gruppo 4
Array
(
    [completi] => Array
        (
            [1] => Array
                (
                    [0] => DSC_8857.JPG__http
                    [1] => DSC_8858.JPG__http
                    [2] => DSC_8859.JPG__http
                )

        )

    [incompleti] => Array
        (
            [2] => Array
                (
                    [0] => DSC_8861.JPG__Error
                    [1] => DSC_8862.JPG__Error
                )

            [4] => Array
                (
                    [0] => DSC_8876.JPG__Error
                )

        )

)
lo invio tramite
echo json_encode($data);

in javascript lo acchiappo con
let id_numbers = JSON.parse(xhttp.responseText);

Ora...

alert(id_numbers.completi[1]);
funziona, mentre invece
alert(id_numbers.completi.length);
Non funziona... e dovrebbe segnarmi 1 elemento...

Invece
alert(id_numbers.completi[1].length);
funziona e mi segna 3 elementi

e ovviamente con questi risultati non riesco a fare un foreach, e nemmeno un for

il problema è che sto usando come key dei numeri che mi servono?
Non posso farli partire da 0
perché io devo fare un foreach del tipo

foreach su [completi] e mi dà 1 elemento (gruppo 1)
un foreach sul gruppo 1 e mi dà 3 elementi

2 Risposte

  • Re: ForEach su array multidimensionale ricevuto con JSON.parse

    In php però mi esce... boh
    una volta che lo porto in javascript no, eppure l'array è lo stesso
    foreach($data['completi'] as $key => $el){
    	echo $key."->";
    	foreach($el as $key2 => $element){
    		echo $element;
    	}
    }
    
  • Re: ForEach su array multidimensionale ricevuto con JSON.parse

    melixo ha scritto:


    funziona, mentre invece
    alert(id_numbers.completi.length);
    Non funziona... e dovrebbe segnarmi 1 elemento...
    Il tuo "completi" NON è un array: vedi la mia risposta qui.

    Tra l'altro, perché hai aperto una nuova discussione sullo stesso problema?
Devi accedere o registrarti per scrivere nel forum
2 risposte