2015-06-29 9 views
5

sto provando valore per l'utente ottiene da array multidimensionale comePHP foreach ritorno ultima fila in ordine di multidimensionale

$array = array(); 

$array["id"] = "1"; 
$array["name"] = "name1"; 
$array["country"] = "country1"; 

$array["id"] = "2"; 
$array["name"] = "name2"; 
$array["country"] = "country2"; 

$array["id"] = "3"; 
$array["name"] = "name3"; 
$array["country"] = "country3"; 

$array["id"] = "4"; 
$array["name"] = "name4"; 
$array["country"] = "country4"; 

foreach($array as $e){ 
    print_r($e); 
} 

E tornare me 4name4country4 solo

ho bisogno di recuperare le righe come

foreach($array as $e){ 
    $id=$e['id']; 
    $name=$e['name']; 
    $country=$e['country']; 
    echo $id.'/'.$name.'/'.$country.'<br>'; 
} 

ma questo mi dà errore come Illegal string offset 'id' da quello che ho capito su array questo dovrebbe restituire tutti i valori, si prega di vedere perché questo semplic L'array non funziona e suggerisce un modo per farlo

+0

Stai sovrascrivendo il 'key's. –

+0

@ b0s3, C'è un modo per mettere insieme più chiavi. –

+0

si potrebbe fare come questo '$ temp_array [" id "] =" 1 "; $ temp_array [" nome "] =" nome1 "; $ temp_array [" paese "] =" paese1 ";' e fare 'array_push ($ array, $ temp_array) ', dovresti farlo per ogni set di array – Subash

risposta

4

Attualmente si sta sovrascrivendo lo key s. È necessario aggiungere correttamente il key. Devi costruire la matrice come -

$array[0]["id"] = "1"; 
$array[0]["name"] = "name1"; 
$array[0]["country"] = "country1"; 

$array[1]["id"] = "2"; 
$array[1]["name"] = "name2"; 
$array[1]["country"] = "country2"; 

O

$array = array(
    0 => array('id' => 1, 'name' => 'name1', 'country' => 'country1'), 
    1 => array('id' => 2, 'name' => 'name2', 'country' => 'country2'), 
); 
+0

Questo ha funzionato, Grazie per una risposta rapida. –

+0

Felice di aiutarti .. –

2

È necessario creare l'array multidimensionale come questo, in questo momento si sta sovrascrivendo la matrice più volte.

$arrays = [ 
    [0]=> 
    ["id"] => "1", 
    ["name"] => "name1", 
    ["country"] => "country1" 
    ], 
    [1]=>[ 
    ... 
    ] 
]; 
foreach($arrays as $array){ 
    $id=$array['id']; 
    $name=$array['name']; 
    $country=$array['country']; 
    echo $id.'/'.$name.'/'.'$country'.'<br>'; 
} 
4

invece, farlo in questo modo non sarà necessario dare le chiavi degli array manualmente

$array = array(); 

$array[] = array("id" => 123, "name" => "Your name", "country" => "UK"); 
$array[] = array("id" => 1342, "name" => "Your name 2 ", "country" => "UK"); 

poi nel foreach fare questo

foreach($array as $key => $val){ 

echo $key. ":  ".$val['id']. " " . $val['name']; 
} 
+0

Anche questa soluzione è buona, ma nella mia applicazione devo cambiare i valori che sarebbero più semplici se l'array ha una chiave. grazie –

+0

@TallboY ​​guarda la mia risposta modificata, vedi ciclo foreach, ha una variabile $ key'' che avrà la chiave dei valori di '$ array' che vengono iterati – Umair