2011-01-28 14 views
8

मैं इस सरणी को कन्वर्ट करना चाहता हूं कि ऐरे [4] को शून्य नहीं देना चाहिए, यह रिक्त स्थान (खाली स्ट्रिंग) दे सकता है।php सरणी में खाली स्ट्रिंग को खाली स्ट्रिंग में कैसे परिवर्तित करें?

Array (
    [0] => 1 
    [1] => 4 
    [2] => 0 
    [3] => V 
    [4] => 
    [5] => N 
); 

(बदलाव का कारण, सामान्य प्रश्न से संबंधित नहीं)

Fatal error: Uncaught exception 
'PDOException' with message 'Database 
error [23000]: Column 'message' cannot 
be null, driver error code is 1048' in 

उत्तर

11

तो फिर तुम सिर्फ सरणी तत्वों के माध्यम से लूप, प्रत्येक मान शून्य के लिए जाँच करनी चाहिए और खाली स्ट्रिंग के साथ बदलना । ऐसा ही कुछ:

foreach ($array as $key => $value) { 
    if (is_null($value)) { 
     $array[$key] = ""; 
    } 
} 

इसके अलावा, आप जाँच समारोह को लागू करने और array_map() फ़ंक्शन का उपयोग कर सकते हैं।

1
foreach($array as $key=>$value) 
{ 
if($value===NULL) 
{ 
$array[$key]=""; 
} 
} 
+0

'0 == NULL'' TRUE' भी है। पहचान का उपयोग किया जाना चाहिए ('===')। –

17

पीएचपी 5.3+

$array = array_map(function($v){ 
     return (is_null($v)) ? "" : $v; 
    },$array); 
3

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

$array = array_map(function($v){ 
    return $v ?: ''; 
},$array); 
0

इस फ़ंक्शन का उपयोग करें। यह नेस्टेड सरणी में रिक्त स्ट्रिंग पर अशक्त का स्थान ले लेगा भी

$arr = array(
      "key1"=>"value1", 
      "key2"=>null, 
      "key3"=>array(
       "subkey1"=>null, 
       "subkey2"=>"subvalue2"), 
      "key4"=>null); 

    echo json_encode(replace_null_with_empty_string($arr)); 

    function replace_null_with_empty_string($array) 
    { 
     foreach ($array as $key => $value) 
     { 
      if(is_array($value)) 
       $array[$key] = replace_null_with_empty_string($value); 
      else 
      { 
       if (is_null($value)) 
        $array[$key] = ""; 
      } 
     } 
     return $array; 
    } 

आउटपुट होगा:

{ 
    "key1": "value1", 
    "key2": "", 
    "key3": { 
    "subkey1": "", 
    "subkey2": "subvalue2" 
    }, 
    "key4": "" 
} 

यहाँ ऑनलाइन का प्रयास करें: https://3v4l.org/7uXTL

1

आप इस के बजाय का उपयोग कर सकते हैं।

$val = strval(@$arr["notfound"]); // will not generate errors and 
            // defaults to an empty string 

यह बातें कम और पठनीय रखने के लिए $_GET पैरामीटर लोड करने के लिए सुपर आसान है:

array_map(function($val){return is_null($val)? "" : $val;},$result); 
1

यहाँ एक ऑनलाइन चाल मैं ऊपर जवाब में नहीं उल्लेख देखा है। बोनस, आप strval()trim() के साथ प्रतिस्थापित कर सकते हैं ... या intval() के साथ यदि आप केवल पूर्णांक स्वीकार करते हैं।

intval के लिए डिफ़ॉल्ट 0 होगा यदि अनुपलब्ध या गैर-संख्यात्मक मान हो। strval के लिए डिफ़ॉल्ट "" है यदि खाली, शून्य या गलत है।

$val_str = strval(@$_GET['q']); 
$val_int = intval(@$_GET['offset']); 

See DEMO

अब एक सरणी के लिए, आप अभी भी पाश के लिए हर मूल्य से अधिक की जरूरत है और यह निर्धारित करेंगे।लेकिन यह बहुत पठनीय है, IMO:

$arr = Array (1, 4, "0", "V", null, false, true, 'true', "N"); 

foreach ($arr as $key=>$value) { 
    $arr[$key] = strval($value); 
} 

echo ("['".implode("','", $arr)."']"); 

यहाँ परिणाम है:

['1','4','0','V','','','1','true','N'] 

दिलचस्प है कि true हो जाता है "1" है, लेकिन 'true' एक स्ट्रिंग रहता है और कि false हो जाता है और खाली स्ट्रिंग ""

अब $arr[$key] = intval($value); का उपयोग कर एक ही डेटा इस परिणाम पैदा करता है:

['1','4','0','0','0','0','1','0','0'] 
संबंधित मुद्दे