Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除数组中前面的所有内容(包括特殊字符)_Php_Arrays - Fatal编程技术网

Php 删除数组中前面的所有内容(包括特殊字符)

Php 删除数组中前面的所有内容(包括特殊字符),php,arrays,Php,Arrays,是否可以删除特殊字符之前的所有内容,包括数组中的此字符 例如,SUBSTR()函数在字符串中使用 $a= ('1-160'); echo substr($a,strpos($a,'-')+1); //output is 160 数组的任何函数,如SUBSTR()?(最低优先级为preg\u replace) 这里数组的结构如下例所示,每个索引由intvalue+hyphen(-) 我需要更改在连字符和连字符之前删除每个值 $a= array('160','250', '380'); 实际上,

是否可以删除特殊字符之前的所有内容,包括
数组中的此字符

例如,
SUBSTR()
函数在字符串中使用

$a= ('1-160');
echo substr($a,strpos($a,'-')+1);
//output is 160
数组的任何函数,如
SUBSTR()
?(最低优先级为
preg\u replace

这里数组的结构如下例所示,每个索引由
int
value+
hyphen(-)

我需要更改在连字符和连字符之前删除每个值

$a= array('160','250', '380');
实际上,我的要求是对数组中
连字符(-)
之后的所有值求和。如果可以删除
连字符(-)
,则可以按如下操作

echo array_sum($a);
//output is 790
但是,由于特殊的字符,我按如下方式生成输出

$total = 0;
foreach($a AS $val){
  $b = explode('-',$val);
  $total += $b[1];
}
echo $total;
//output is 790
我正在寻找尽可能短而快的方法。

使用应该可以

<?php

$a = ['1-160','2-250', '3-380'];
$result = [];

foreach($a as $b) {
    $result[] = substr(strstr($b, '-'), 1); // strstr => get content after needle inclusive needle, substr => remove needle
}

var_dump($result);

var_dump(array_sum($result));
使用应该可以正常工作

<?php

$a = ['1-160','2-250', '3-380'];
$result = [];

foreach($a as $b) {
    $result[] = substr(strstr($b, '-'), 1); // strstr => get content after needle inclusive needle, substr => remove needle
}

var_dump($result);

var_dump(array_sum($result));

虽然您已经有了答案,但这是供您参考的

array_sum(array_map(function ($item) {return explode('-', $item)[1];}, $a));

虽然你已经有了答案,但这是供你参考的

array_sum(array_map(function ($item) {return explode('-', $item)[1];}, $a));

你目前的方法有什么问题?@TimBiegeleisen,
array\u sum
explode
和增值要快,不是吗?所以我想知道,在我的情况下,我能做
array\u sum
吗。preg\u grep和array\u sum但是我怀疑它会更快你的数据集有多大?如果不是很大,很可能不会有任何明显的性能差异。您当前的方法有什么问题吗?@TimBiegeleisen,
array\u sum
explode
和增值都要快,不是吗?所以我想知道,在我的情况下,我能做
array\u sum
吗。preg\u grep和array\u sum但是我怀疑它会更快你的数据集有多大?如果不是很大,很可能不会有任何明显的性能差异。是的!!干净的方式。是的!!干净的方式。