2015-06-29 13 views
5

Staram wartość użytkownika otrzymasz od tablicy wielowymiarowej jakoPHP foreach powrocie ostatni wiersz w wielowymiarowych tablicy

$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); 
} 

powrót mi 4name4country4 tylko

muszę pobrać wiersze jak

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

ale to daje mi błąd jako Illegal string offset 'id' z tego co zrozumiałem o tablicy, to powinno zwrócić wszystkie wartości, zobacz dlaczego to simpl e tablica nie działa i sugeruje jakikolwiek sposób to zrobić.

+0

Jesteś nadpisania 'key's. –

+0

@ b0s3, Czy istnieje sposób na masowanie wielu kluczy. –

+0

możesz to zrobić w następujący sposób: $ temp_array ["id"] = "1"; $ temp_array ["name"] = "name1"; $ temp_array ["country"] = "country1"; 'and do' array_push ($ array, $ temp_array) ', powinieneś to zrobić dla każdego zestawu tablic – Subash

Odpowiedz

4

Aktualnie nadpisujesz numery key. Musisz poprawnie dodać key. Trzeba zbudować tablicę podobnego -

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

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

LUB

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

To zadziałało, dzięki za szybką odpowiedź. –

+0

Cieszę się, że mogę Ci pomóc .. –

2

trzeba stworzyć wielowymiarową tablicę tak, teraz jesteś nadpisanie tablicę wielokrotnie.

$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

Zamiast robić to tak, więc nie będzie musiał dać kluczy tablicy ręcznie

$array = array(); 

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

następnie w foreach zrobienia tego

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

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

To rozwiązanie jest również dobre, ale w mojej aplikacji muszę zmienić wartości, które byłyby łatwiejsze, jeśli tablica ma klucz do niego. dzięki –

+0

@TallboY ​​spójrz na moją zredagowaną odpowiedź, zapoznaj się z pętlą foreach, ma ona zmienną $ key'', która będzie miała klucz iteracji wartości '$ tablica' – Umair

Powiązane problemy