案例1: 我有一个字符串“57_5”。我如何取出下划线(_),据说(我认为)作为分隔符,以便我可以 57 和 5 ?这两个值应该是INTEGERS NOT STRING !!!我需要在PHP中执行此操作
案例2: 我有一个数组(“57_8”,“45_7”,“24_3”)。我需要获取数组中的每个元素,取出下划线然后将它们转换为 INTEGERS ,所以总共我应该有8个不同的值。如何在PHP中实现这一目标?我应该有类似 57,8,45,7,24,3 的东西。记住最终结果不应该是数组,值应该是INTEGERS。
答案 0 :(得分:3)
正如评论中所写,这是一个变体,“implode explode intval array_map所有的东西”:
$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)
}
请参阅Online Demo。
答案 1 :(得分:0)
如果你有一个57_5的字符串并取出下划线你可以这样做:
ex1=str_explode("_",$string);
然后你会:
$ ex1 [0]将为57而$ ex1 [1]将为5