2016-12-11 1 views
0

J'ai un script PHP qui lit à partir d'un CSV et une partie du script a une instruction if qui va valider une cellule dans le CSV sur si la cellule est vide ou non. Si la cellule est vide, le code de l'instruction if est exécuté. Si la cellule n'est pas vide, rien ne doit arriver.Comment éviter "Attention: file_get_contents(): Nom de fichier ne peut pas être vide" Lors de la vérification d'une valeur vide

Bien que le script fonctionne parfaitement et fait exactement ce que je dois, je reçois l'avertissement suivant:

enter image description here Il semble que cet avertissement sera toujours montrer si le code est vérifié contre une cellule vide dans le CSV . Le fait que les cellules soient vides n'est pas un problème car certaines des cellules du fichier CSV sont à juste titre vides, ce qui est l'objectif d'avoir une instruction if pour vérifier si la cellule est vide ou non.

Voici le segment de mon script relatif à ceci:

// If the previous row has an empty 'Main Image' field, add the additional image field for that row. 
// The line below is line 145 from the screenshot above. 
if (!empty(base64_encode(file_get_contents($previousDataLine['Main Image'])))) { 
     $client->catalogProductAttributeMediaCreate(
      $sessionId, 
      $dataLine['Product SKU'], 
      array(
       'file' => array(
        'content' => base64_encode(file_get_contents($dataLine['All Images (One Per Row)'])), 
        'mime' => 'image/png', 
       ), 
       'position' => $dataLine['Image Rank Position'], 
       'exclude' => '0' 
      ), 
      0 
     ); 
} 

Ai-je fait quelque chose de mal? Pourquoi PHP insiste-t-il pour me montrer cet avertissement même si je ne fais qu'exécuter du code quand la cellule est et non vide. Merci pour votre temps.

+1

Vérifiez si '' est pas vide $ previousDataLine [ 'Image principale']. –

+0

'if (! Vide ($ previousDataLine ['Image principale']) &&! Vide (base64_encode (file_get_contents ($ previousDataLine ['Image principale'])))) {' – Federkun

+0

@Federkun vous devriez l'élever à une réponse. – Stuart

Répondre

1

Cette opération a nécessité le retrait de la partie base64_encode(file_get_contents()) du code.

if (!empty(base64_encode(file_get_contents($previousDataLine['Main Image'])))) {

est devenu:

if (!empty($previousDataLine['Main Image'])) {

+1

référence intéressante: [ici] (http://stackoverflow.com/questions/15212127/is-an-empty-string-valid-base64-encoded-data-of-zero-bytes-length) – Martin