2015-09-16 6 views
5

मेरे पास एक वेरिएबल सरणी है जो मेरे फ़ंक्शन को पुनर्प्राप्त करने के लिए सबकुछ प्राप्त करती है।प्रदर्शन "प्रदान नहीं किया गया" जब परिवर्तनीय डेटाबेस में शून्य या खाली है

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

और फिर मैं अगर मूल्य varchar और 0 पूर्णांक के लिए के लिए रिक्त है की जाँच करने के foreach इस्तेमाल किया और फिर मैं "प्रदान नहीं की" करने के लिए अपने मूल्य इतना है कि हर यह कहा जा रहा है यह कहेंगे "प्रदान नहीं की" की जगह

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']; 

लेकिन यह गलत लगता है क्योंकि यह इसके बजाय आउटपुट को नष्ट कर देता है।

+0

इसके बजाय आप आसानी से 'if (खाली ($ var))' –

+0

का उपयोग कर सकते हैं, मुझे लगता है कि आपको लगता है कि आप 'foreach' लूप में सरणी वस्तुओं के मानों को बदल रहे हैं। लेकिन ऐसा नहीं है, उस लूप में '$ var' एक नया चर है जो सरणी आइटम (सूचक नहीं) के मान के साथ असाइन किया गया है। –

+0

यह असली कोड भी है? क्योंकि foreach के अंदर '$ var' '$ var' चर नहीं है जिसका आप नीचे उपयोग करते हैं .. –

उत्तर

1

कुछ आप & यहाँ उपयोग कर सकते हैं सरणी के मूल्य पारित करने के लिए वास्तव में के बारे में जो वर्तमान सरणी कुंजी है, जो भी कभी कभी गुजर के रूप में कहा जाता है में चिंता किए बिना foreach के अंदर बदलने के लिए संदर्भ द्वारा एक परिवर्तनीय मूल्य।

array_map()

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

का उपयोग लेकिन मैं foreach के साथ जाने का सुझाव देगाforeach

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

का उपयोग करना।

1

मैं ऐसा कुछ करने की कोशिश करूंगा। मैं टिप्पणियां नहीं लिख सकता इसलिए मैं इसे एक उत्तर के रूप में लिख रहा हूं।

मैं आपके कोड से क्या समझता हूं कि आपके सरणी के पास महत्वपूर्ण मूल्य संबंध है। शायद यही कारण है कि यह आपके एकल आयामी सरणी पुनरावृत्ति के साथ काम नहीं कर रहा है। इसके बजाए इसे आजमाएं।

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

इसे आज़माएं।

1

अद्यतन आपकी समारोह इतना तरह

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']; 
संबंधित मुद्दे