0

案例 1:我有一个字符串"57_5"。我如何取出据称(我认为)充当分隔符的下划线(_) ,以便我可以有575?这两个值应该是整数而不是字符串!!!我需要在 PHP 中执行此操作

案例 2:我有一个数组 ("57_8", "45_7", "24_3")。我需要获取数组中的每个单独元素,取出下划线,然后将它们转换为INTEGERS,所以我总共应该有 8 个不同的值。如何在 PHP 中实现这一点?我应该有57, 8, 45, 7, 24, 3记住最终结果不应该是数组,值应该是整数。

4

2 回答 2

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)
}

请参阅在线演示

于 2013-08-28T09:27:42.137 回答
0

如果你有一个 57_5 的字符串并去掉下划线,你可以这样做:

ex1=str_explode("_",$string);

然后你将拥有:

$ex1[0] 将是 57,$ex1[1] 将是 5

于 2013-08-28T09:28:57.120 回答