Saya perlu membagi input string saya menjadi array di koma.
Bagaimana saya bisa menyelesaikan ini?
Memasukkan:
9,admin@example.com,8
Saya perlu membagi input string saya menjadi array di koma.
Bagaimana saya bisa menyelesaikan ini?
9,admin@example.com,8
Jawaban:
Coba meledak :
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
print_r($myArray);
Output:
Array
(
[0] => 9
[1] => admin@example.com
[2] => 8
)
var_dump
yang memberikan informasi lebih rinci. Yang lebih bermanfaat adalah var_export($myArray, true)
karena mengembalikan output var_dump
sebagai string sehingga Anda dapat menyimpannya dalam beberapa log tanpa merusak situs yang dihasilkan ...
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
foreach($myArray as $my_Array){
echo $my_Array.'<br>';
}
Keluaran
9
admin@example.com
8
$string = '9,admin@google.com,8';
$array = explode(',', $string);
Untuk situasi yang lebih rumit, Anda mungkin perlu menggunakannya preg_split
.
Jika string itu berasal dari file csv, saya akan menggunakan fgetcsv()
(atau str_getcsv()
jika Anda memiliki PHP V5.3). Itu akan memungkinkan Anda untuk mem-parsing nilai yang dikutip dengan benar. Jika bukan csv, explode()
harus menjadi pilihan terbaik.
Kode:
$string = "9,admin@example.com,8";
$array = explode(",", $string);
print_r($array);
$no = 1;
foreach ($array as $line) {
echo $no . ". " . $line . PHP_EOL;
$no++;
};
On line:
body, html, iframe {
width: 100% ;
height: 100% ;
overflow: hidden ;
}
<iframe src="https://ideone.com/pGEAlb" ></iframe>
Dengan cara sederhana Anda bisa ikut explode($delimiter, $string)
;
Namun secara luas, dengan Pemrograman Manual:
$string = "ab,cdefg,xyx,ht623";
$resultArr = [];
$strLength = strlen($string);
$delimiter = ',';
$j = 0;
$tmp = '';
for ($i = 0; $i < $strLength; $i++) {
if($delimiter === $string[$i]) {
$j++;
$tmp = '';
continue;
}
$tmp .= $string[$i];
$resultArr[$j] = $tmp;
}
Outpou: print_r($resultArr);
Array
(
[0] => ab
[1] => cdefg
[2] => xyx
[3] => ht623
)
Pilihan terbaik adalah menggunakan fungsi "explode ()".
$content = "dad,fger,fgferf,fewf";
$delimiters =",";
$explodes = explode($delimiters, $content);
foreach($exploade as $explode) {
echo "This is a exploded String: ". $explode;
}
Jika Anda menginginkan pendekatan yang lebih cepat, Anda dapat menggunakan alat pembatas seperti Delimiters.co Ada banyak situs web seperti ini. Tapi saya lebih suka kode PHP sederhana.
explode
memiliki beberapa masalah yang sangat besar dalam penggunaan kehidupan nyata:
count(explode(',', null)); // 1 !!
explode(',', null); // [""] not an empty array, but an array with one empty string!
explode(',', ""); // [""]
explode(',', "1,"); // ["1",""] ending commas are also unsupported, kinda like IE8
ini sebabnya saya lebih suka preg_split
preg_split('@,@', $string, NULL, PREG_SPLIT_NO_EMPTY)
seluruh boilerplate:
/** @brief wrapper for explode
* @param string|int|array $val string will explode. '' return []. int return string in array (1 returns ['1']). array return itself. for other types - see $as_is
* @param bool $as_is false (default): bool/null return []. true: bool/null return itself.
* @param string $delimiter default ','
* @return array|mixed
*/
public static function explode($val, $as_is = false, $delimiter = ',')
{
// using preg_split (instead of explode) because it is the best way to handle ending comma and avoid empty string converted to ['']
return (is_string($val) || is_int($val)) ?
preg_split('@' . preg_quote($delimiter, '@') . '@', $val, NULL, PREG_SPLIT_NO_EMPTY)
:
($as_is ? $val : (is_array($val) ? $val : []));
}