Toon posts:

[PHP] Array string value omzetten naar NULL

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wie kan mij helpen, want ik loop even vast op het volgende. Ik krijg de volgende array:

code:
1
2
3
4
5
array (size=35)
  0 => string ''1','amsterdam2','BO','4','2017-06-08','B','J','J','N','J','J','2017-06-08 14:05:02'' (length=84)
  1 => string ''1','amsterdam2','PK','37','2017-06-08','J','J','J','N','J','J','2017-06-08 14:05:02'' (length=85)
  2 => string ''1','denhaag1','MH','27','2017-06-08','J','J','J','J','J','J','2017-06-08 14:05:02'' (length=83)
  3 => string ''1','denhaag1','WX','','2017-06-08','J','J','J','N','J','J','2017-06-08 14:05:02'' (length=81)


Zoals je bij nummer 3 kunt zien, achter WX, is er een veld met ''. De database zet dit om naar een 0, terwijl het NULL moet zijn. Hoe krijg ik het voor elkaar dat de '' in bovenstaande array een NULL wordt. Ik heb hetvolgende al geprobeert:

code:
1
2
3
$aValues2 =  array_map(function($v) {
                return (is_null($v)) ? '' : $v;
            }, $aValues);


Maar die werkt niet!

Acties:
  • 0 Henk 'm!

  • CyBeRSPiN
  • Registratie: Februari 2001
  • Laatst online: 16:26

CyBeRSPiN

sinds 2001

[google=php convert empty string to null]

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Je code doet precies het tegenovergestelde van wat je wil..

Acties:
  • 0 Henk 'm!

  • BernardV
  • Registratie: December 2003
  • Laatst online: 12:58
Die code gaat sowieso niet werken, ook al wordt de voorwaarde aangepast.
In die array staat een complete string, enige wat je zo zou kunnen doen is een replace op '' of de string moet eerst gesplit worden.

Acties:
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Het lijkt er op dat je de CSV inlaad met http://php.net/manual/en/function.file.php

CSV verwerken doe je met http://php.net/fgetcsv
Vervolgens kan je met http://php.net/array_map de lege strings veranderen in NULL, je kan dan ook de 'J' en 'N' netjes omzetten naar boolean T/F of 1/0

[ Voor 13% gewijzigd door DJMaze op 08-06-2017 14:49 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Niet heel netjes, maar het werkt. Dit is het geworden:

code:
1
2
3
4
5
6
7
8
foreach($aDataRows as $index => $aData){
 $aData = array_map(function ($val) { return $val != NULL ? $val : 'NULL';}, $aData);
 $aValues[] = "'" . implode("','", $aData) . "'";
}

$aValues = str_replace("'NULL'", "NULL", $aValues);
$SQL = "INSERT IGNORE INTO `".$sTable."` (`".implode("`,`", $aColNames)."`)"
                . " VALUES (".implode("), (", $aValues)."); ";

[ Voor 82% gewijzigd door Verwijderd op 08-06-2017 20:57 ]

Pagina: 1