Say you store a csv formatted string somewhere to represent an array. For example, Johnny has items “apple|orange|banana”. Then in your code, you may parse out the items as follows:
$items = "apple|orange|banana"; // retrieve it from somewhere $my_arr = explode("|", $items); if (count($my_arr) > 0){ print "Johnny has something."; }else{ print "Johnny has nothing."; }
It works fine as it seems.
Well, actually, you will never see the “Johnny has nothing” print out. Surprisingly, even if $items is an empty string, explode will still return an array with one element. That array is:
Array ( [0] => )
Sigh… to avoid this, if you have to use the csv format, then add an if statement to double check the string length.
$items = "apple|orange|banana"; // retrieve it from somewhere if ($items != ""){ $my_arr = explode("|", $items); print "Johnny has something."; }else{ print "Johnny has nothing."; }
Best practice I think is to store such an array in json format. That way you can completely avoid this surprise!
Ref: http://www.php.net/manual/en/function.explode.php#99830