案例 1:我有一个字符串"57_5"。我如何取出据称(我认为)充当分隔符的下划线(_) ,以便我可以有57和5?这两个值应该是整数而不是字符串!!!我需要在 PHP 中执行此操作
案例 2:我有一个数组 ("57_8", "45_7", "24_3")。我需要获取数组中的每个单独元素,取出下划线,然后将它们转换为INTEGERS,所以我总共应该有 8 个不同的值。如何在 PHP 中实现这一点?我应该有57, 8, 45, 7, 24, 3记住最终结果不应该是数组,值应该是整数。
正如评论中所写,这是一种变体,“implode explode intval array_map all the things”:
$integers = array_map('intval', explode('_', implode('_', (array) $arrayOrString)));
由于强制转换,这通过规范化输入一次处理这两种情况。
代码示例:
<?php
/**
* How do I get rid of the delimiters?
* @link http://stackoverflow.com/q/18484012/367456
*/
$cases = [
1 => "57_5",
2 => array ("57_8", "45_7", "24_3"),
];
foreach ($cases as $num => $case)
{
$integers = array_map('intval', explode('_', implode('_', (array) $case)));
echo 'Case #', $num, ': ', var_dump($integers), "\n";
}
程序输出:
Case #1: array(2) {
[0]=> int(57)
[1]=> int(5)
}
Case #2: array(6) {
[0]=> int(57)
[1]=> int(8)
[2]=> int(45)
[3]=> int(7)
[4]=> int(24)
[5]=> int(3)
}
请参阅在线演示。
如果你有一个 57_5 的字符串并去掉下划线,你可以这样做:
ex1=str_explode("_",$string);
然后你将拥有:
$ex1[0] 将是 57,$ex1[1] 将是 5