Skriva ut en multidemensionell array med en while loop?

Permalänk
Medlem

Skriva ut en multidemensionell array med en while loop?

Hallå!

Har försökt detta:

$i=0; while($val=$newArr[$i++]) { print("$val\n"); }

Men får bara ut tomma arrayer:

Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array

Har läst PHP Manualen men får inte rätt på det

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem
Skrivet av flashen:

Hallå!

$i=0; while($val=$newArr[$i++]) { print("$val\n"); }

print_r() är funktionen du söker

print_r($val)

Visa signatur

Awesome stuff can be found @ www.demonshalo.com
follow us on twitter: www.twitter.com/demonshalo_com

Permalänk
Medlem

foreach($newarr as $val){ foreach($val as $point) echo $point; } }

Med bättre namn:
om man har en matris med arrayen $row som alla innehåller en array $column

foreach($row as $column) foreach($column as $value) echo $value;

Permalänk
Medlem

Tack för svaren, fungerade med foreach och k => v

Tänkt fel, while är väll bara för enkla Arrays då första värdet skrevs ut

foreach ($newArr as $key => $value ){ foreach ($value as $k => $v){ print_r($v); echo "\n"; }

En fråga till

Men har har en annan Array som är ett steg längre ner, kör jag den koden ovan på Array får jag ut:

Array ( [0] => Array ( [test1] => blabla [test2] => blabla ) osv...

Hur gör jag får att gå ner ett steg till så att enbart K och V skrivs ut?

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Inaktiv

echo($v); istället för print_r($v);

Permalänk
Medlem
Skrivet av anon150287:

echo($v); istället för print_r($v);

Då får jag: Array Array Array Array Array Array Array

Vill bara få ut sjävla värdet och inte arrayn runt om måste ner ett steg, kan man göra det med $i? Är ganska ny på PHP ^^

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Inaktiv

Det här funkar för mig (på en multidimensionell array, 10x10):

foreach ($arr as $key => $value ) { foreach ($value as $k => $v) { echo($k . '|' .$v . ' '); } echo('<br>'); }

Permalänk
Medlem
Skrivet av anon150287:

Det här funkar för mig (på en multidimensionell array, 10x10):

foreach ($arr as $key => $value ) { foreach ($value as $k => $v) { echo($k . '|' .$v . ' '); } echo('<br>'); }

Fungerar bra

Men får bara ut den första Arrayen's sub

Har:

Första Arrayn 1

Första-sub 1-2-3-4-5-6-7

Andra Arrayn 2

Andra-sub 1-2-3-4-5-6-7

osv.

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem

Är $newArr mer än en matris klarar den här av hur många dimensioner som helst:
(den är dessutom ett ganska bra exempel på en rekursiv funktion, d v s en som anropar sig själv)

<?php print_multi_array($newArr); function print_multi_array($array) { foreach($array as $key => $value) { if(is_array($value)){ echo $key . 'is array, contains:<br> '; print_multi_array($value); } else echo $key.' '.$value.'<br>'; } } ?>

Permalänk
Medlem
Skrivet av fiffy:

Är $newArr mer än en matris klarar den här av hur många dimensioner som helst:
(den är dessutom ett ganska bra exempel på en rekursiv funktion, d v s en som anropar sig själv)

<?php print_multi_array($newArr); function print_multi_array($array) { foreach($array as $key => $value) { if(is_array($value)){ echo $key . 'is array, contains:<br> '; print_multi_array($value); } else echo $key.' '.$value.'<br>'; } } ?>

Det fungerar men jag får ändå inte ut alla Values innanför alla "huvud Arrays"

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem

Kan du ge en tydligare bild hur datat är arrangerat, dvs?

<?php var_dump($newArr); ?>

Permalänk
Medlem
Skrivet av fiffy:

Kan du ge en tydligare bild hur datat är arrangerat, dvs?

<?php var_dump($newArr); ?>

Visst

Vill skriva ut de värdena som är djupast i Arryen

Array ( [0] => Array ( [TEST] => Array ( [0] => Array ( [TEST] => TEST [TEST] => TEST ) [1] => Array ( [TEST] => TEST [TEST] => TEST ) [2] => Array ( [TEST] => TEST [TEST] => TEST ) [3] => Array ( [TEST] => TEST [TEST] => TEST ) [4] => Array ( [TEST] => TEST [TEST] => TEST ) [5] => Array ( [TEST] => TEST [TEST] => TEST ) [6] => Array ( [TEST] => TEST [TEST] => TEST ) [7] => Array ( [TEST] => TEST [TEST] => TEST ) [8] => Array ( [TEST] => TEST [TEST] => TEST ) [9] => Array ( [TEST] => TEST [TEST] => TEST ) ) ) [1] => Array ( [TEST] => Array ( [0] => Array ( [TEST] => TEST [TEST] => TEST ) [1] => Array ( [TEST] => TEST [TEST] => TEST ) [2] => Array ( [TEST] => TEST [TEST] => TEST ) [3] => Array ( [TEST] => TEST [TEST] => TEST ) [4] => Array ( [TEST] => TEST [TEST] => TEST ) [5] => Array ( [TEST] => TEST [TEST] => TEST ) [6] => Array ( [TEST] => TEST [TEST] => TEST ) [7] => Array ( [TEST] => TEST [TEST] => TEST ) [8] => Array ( [TEST] => TEST [TEST] => TEST ) [9] => Array ( [TEST] => TEST [TEST] => TEST ) ) ) )

...och så vidare några fler steg på samma sätt men de behöver jag inte skriva ut

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem

Är du säker på att min funktion inte skriver ut allt? Verkar lite svårt att avgöra om allt heter TEST...

Permalänk
Medlem
Skrivet av fiffy:

Är du säker på att min funktion inte skriver ut allt? Verkar lite svårt att avgöra om allt heter TEST...

Pinsamt, hade skrivit in fel Array

Nu fungerar det

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem

Bra att det fungerar, lycka till med resten!