Oprettet søn. d. 09. november 2008 kl. 22:57:00

superb
superb (14.875 point. Point ude: 330)
www.vilibellus.dk

Slette tomt element i multidimensionalt array

Hvis jeg har et array på formen
$temp[] = array('id' => '12','navn' => 'etnavn');
$temp[] = array('id' => '','navn' => '');

Og gerne vil slette det tomme array hvis id er tomt, så har jeg lavet nedenstående, men det virker ikke, nogen der kan give mig et hint til hvad der er galt?
$i=0;
foreach($temp[$i]['id']) as $value {
  if (is_null($value)) {
    unset($temp[$i]);
    }
$i++
  }

Skrevet man. d. 10. november 2008 kl. 00:00:41| #1

micc
micc (7.860 point)
For det første har du en del syntaksfejl og for det andet så evaluerer is_null('') til false. Prøv med:

foreach ($temp as $key => $value)
{
if (empty($value['id'])) {
  unset($temp[$key]);
}
}

Skrevet man. d. 10. november 2008 kl. 16:54:17| #2

superb
superb (14.875 point)
www.vilibellus.dk
tusind tak, smid et svar.
Lige for at være sikker på jeg har forstået det rigtig, så behøver jeg altså slet ikke give den den et nr i $temp[$i]['id'] når man sætter den som as $key => $value? så bliver den simpelthen automatisk sat?

Skrevet man. d. 10. november 2008 kl. 17:12:23| #3

superb
superb (14.875 point)
www.vilibellus.dk
ups jeg har opdaget en fejl, jeg havde glemt det skulle være

$temp[] = array('id' => '12','navn' => 'etnavn');
$temp[] = array('id' => '','navn' => '');
$output[] = $temp;
altså inde i et array mere

Skrevet man. d. 10. november 2008 kl. 17:15:18| #4

superb
superb (14.875 point)
www.vilibellus.dk
har fået lavet
foreach ($output as $key => $value)
{
if (empty($value[$i]['Store'])) {
  unset($output[$key]);
  $i++;
  }
}
der ser ud til at virke, er det korrekt måde at gøre det på?

Skrevet man. d. 10. november 2008 kl. 19:29:24| #5

micc
micc (7.860 point)
Indeholder $output kun ét array? Og hvorfor kommer 'Store' lige pludselig ind i billedet?

Skrevet man. d. 10. november 2008 kl. 20:56:37| #6

superb
superb (14.875 point)
www.vilibellus.dk
store var fordi jeg fandt ud af jeg hellere ville have den til at tjekke efter en anden, $output indeholder alle $temp[] arrays.

Skrevet man. d. 10. november 2008 kl. 22:25:04| #7

micc
micc (7.860 point)
Så ville jeg nok bruge følgende:

foreach ($output as $key1 => $value)
{
foreach ($output[$key1] as $key2 => $value)
{
  if (empty($value['store'])) {
  unset($output[$key1][$key2]);
  }
}
}

Din metode virker fint nok når det kun udføres en gang og hvis $i ikke tilfældigvis allerede har fået en værdi fra en tidligere gennemløbet løkke, men hvis du vil have en mere fremtidssikret kode så er ovenstående en lidt bedre løsning (og afhængig af din php-version kan den nok sagtens optimeres).

Skrevet ons. d. 12. november 2008 kl. 12:04:32| #8


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger