PHP eksik parçaları patlayabilir ve boş bir dizeye ayarlayın

4 Cevap php

Ne aşağıdaki gerçekleştirmek için en iyi yoldur.

Ben bu biçimde dizeleri var:

$s1 = "name1|type1"; //(pipe is the separator)
$s2 = "name2|type2";
$s3 = "name3"; //(in some of them type can be missing)

En nameN / typeN dizeleri vardır ve onlar bir boru içeremez varsayalım.

I need to exctract the name / type separetly, I do beri:

$temp = explode('|', $s1);
$name = $temp[0];
$type = ( isset($temp[1]) ? $temp[1] : '' );

isset($temp[1]) veya count($temp) yapmak zorunda kalmadan bunu yapmak daha kolay (daha akıllı ne olursa olsun daha hızlı) bir yolu var mı.

Teşekkürler!

4 Cevap

(Patlayabilir için argümanların sırasını Not)

list($name,$type) = explode( '|',$s1);

Bir Notice verecek olsa $ tür, $ s3 için NULL olacaktır

$ Temp [1] boş bir değer var ve içerik beri isset yapmak gerek yoktu. Bu benim için çalışıyor:

$str = 'name|type';

// if theres nothing in 'type', then $type will be empty
list($name, $type) = explode('|', $str, 2);
echo "$name, $type";
if(strstr($temp,"|"))
{
   $temp = explode($s1, '|');
   $name = $temp[0];
   $type = $temp[1];
}
else
{
   $name = $temp[0];
   //no type
}

Belki mi?