2015-09-16 8 views
5

Ho una matrice variabile che ottiene tutto ciò che la mia funzione ha recuperato.Mostra "Non fornito" quando la variabile è vuota o vuota nel database

$array = $funcs->searchCompany($bizName); 

e poi ho usato foreach per verificare se il valore è nullo per varchar e 0 per int e quindi i sostituire il valore su "non forniti" in modo che ogni volta che viene chiamato dirà "non forniti"

foreach ($array as $var) { 
      if($var == " " || $var == 0) { 
       $var = "Not Provided"; 
      } 
     } 

    $name = $var['name']; 
      $url = $var['url']; 
      $tagline = $var['tagline']; 
      $descrip = $var['descrip']; 
      $bemail = $var['bemail']; 
      $address = $var['address']; 
      $city = $var['city']; 

ma sembra sbagliato perché distrugge invece l'uscita.

+0

Invece puoi semplicemente usare 'if (vuoto ($ var))' –

+0

Penso che tu pensi di cambiare i valori degli elementi dell'array nel ciclo 'foreach'. Ma questo non è il caso, il '$ var' in quel ciclo è una nuova variabile assegnata con il valore della voce dell'array (non un puntatore). –

+0

Anche questo è il vero codice? Perché il '$ var' all'interno del foreach non è la variabile' $ var' che usi sotto di esso .. –

risposta

1

È possibile utilizzare & qui per passare il valore della matrice per cambiare all'interno foreach senza realmente preoccuparsi che è la chiave dell'array corrente, che viene a volte chiamato anche come passaggio il valore di una variabile per riferimento.

Utilizzandoforeach

foreach ($array as &$value) // note the & 
{ 
    if(empty($value)) $value = 'Not Provided'; 
    // other values remain untouched 
} 

Utilizzandoarray_map()

$array = array_map(function($value){ 
      if(empty($value)) 
       return 'Not Provided'; 
      return $value; 
     }, $array); 

Ma io vi suggerisco di andare con foreach.

1

Proverei qualcosa del genere. Non posso scrivere commenti, quindi lo scrivo come risposta.

Quello che ho capito dal tuo codice è che il tuo array ha una relazione di valori chiave. Questo è probabilmente il motivo per cui non funziona con l'iterazione di array monodimensionale. prova questo.

foreach ($array as $var => $value) { 
     if($value == " " || $value == 0 || $value == null) { 
      $array[$var] = "Not Provided"; 
     } 
     } 
    echo "<pre>"; 
    print_r($array); 
    echo "</pre>"; 

Fare un tentativo.

1

aggiornamento la funzione in modo da qualcosa come

foreach ($array as &$var) { 
    if($var == " " || $var == 0) { 
     $var = "Not Provided"; 
    } 
} 

$name = $array['name']; 
$url = $array['url']; 
$tagline = $array['tagline']; 
$descrip = $array['descrip']; 
$bemail = $array['bemail']; 
$address = $array['address']; 
$city = $array['city']; 
Problemi correlati